s2s-verify 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +39 -0
- package/README.md +209 -0
- package/bin/bramo-verify.js +6 -0
- package/dist/cli.js +82 -0
- package/package.json +57 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
Copyright © 2026 Kiniun Corp. All rights reserved.
|
|
4
|
+
|
|
5
|
+
**bramo-verify is free to use, including commercially. It is not open source.**
|
|
6
|
+
|
|
7
|
+
## You may
|
|
8
|
+
|
|
9
|
+
- Use bramo-verify for any purpose, at no cost, on any number of machines and repositories.
|
|
10
|
+
- Run it in automated systems, including CI pipelines and git hooks.
|
|
11
|
+
- Use its output — verdicts, reports, JSON — however you like, including in commercial products.
|
|
12
|
+
|
|
13
|
+
## You may not
|
|
14
|
+
|
|
15
|
+
- Redistribute, resell, sublicense, or offer bramo-verify as a hosted service.
|
|
16
|
+
- Modify, decompile, disassemble, or reverse-engineer it, or attempt to derive its source.
|
|
17
|
+
- Remove or obscure this notice.
|
|
18
|
+
|
|
19
|
+
The published package is minified. That is obfuscation, not protection — the restriction above
|
|
20
|
+
is a legal one, not a technical claim. The verification *method* is published deliberately at
|
|
21
|
+
<https://bramo.ai/docs/verify>, so a verdict can be judged without reading the source.
|
|
22
|
+
|
|
23
|
+
## No warranty
|
|
24
|
+
|
|
25
|
+
Provided "as is", without warranty of any kind, express or implied.
|
|
26
|
+
|
|
27
|
+
bramo-verify reports what it observed. It does **not** guarantee that your code is correct,
|
|
28
|
+
complete, or safe, and a clean result means "nothing obvious was found" — never "this is
|
|
29
|
+
correct". Its heuristic findings can be wrong, and it is deliberately tuned to miss things
|
|
30
|
+
rather than to guess. You remain responsible for your own software.
|
|
31
|
+
|
|
32
|
+
To the maximum extent permitted by applicable law, Kiniun Corp shall not be liable for any
|
|
33
|
+
claim, damages, or other liability arising from or in connection with bramo-verify or its use.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
*Not legal advice and not drafted by a lawyer. If this license becomes commercially
|
|
38
|
+
load-bearing, have counsel review it — some jurisdictions limit reverse-engineering
|
|
39
|
+
restrictions, particularly for interoperability.*
|
package/README.md
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# s2s-verify
|
|
2
|
+
|
|
3
|
+
Audits a git diff and reports **what it actually observed** — never what an agent claimed.
|
|
4
|
+
|
|
5
|
+
Formerly `bramo-verify`. It is part of the s2s (spec-to-ship) family. If you used the old name,
|
|
6
|
+
see [Coming from bramo-verify](#coming-from-bramo-verify).
|
|
7
|
+
|
|
8
|
+
Your coding agent says the tests pass. This spawns them and reads the real exit code. It says
|
|
9
|
+
the feature is done. This scans the diff for the shapes unfinished work leaves behind.
|
|
10
|
+
|
|
11
|
+
Free. No account, no API key, no model calls, no telemetry — nothing leaves your machine.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
$ npx s2s-verify
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Try it on a planted repo first
|
|
18
|
+
|
|
19
|
+
Pointing an unfamiliar CLI at your own work is a fair thing to hesitate over. This repo exists
|
|
20
|
+
so you don't have to: one commit an agent claimed was finished, with two things wrong with it.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
git clone --depth 2 https://github.com/KiniunCorp/s2s-verify-demo demo && cd demo && npx --yes s2s-verify
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Expect `FINDINGS` and exit code 1. `--depth 2`, not `1` — the default audit is `HEAD~1..HEAD`,
|
|
27
|
+
so a single-commit clone leaves nothing to diff against.
|
|
28
|
+
|
|
29
|
+
## Install
|
|
30
|
+
|
|
31
|
+
Requires Node 20 or newer. No account, no API key.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
npx s2s-verify
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Or add it to a project, so everyone runs the same version:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
npm i -D s2s-verify
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
The argument is the **baseline** to compare against; `HEAD` is always the other end.
|
|
46
|
+
|
|
47
|
+
| Invocation | Audits |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `s2s-verify` | `HEAD~1..HEAD` — the last commit. The default: "what the agent just did." |
|
|
50
|
+
| `s2s-verify HEAD~3` | The last three commits. |
|
|
51
|
+
| `s2s-verify main` | The whole branch, against its merge-base with `main` — so commits `main` picked up after you branched don't pollute the diff. |
|
|
52
|
+
| `s2s-verify --staged` | Staged changes only, for pre-commit use. |
|
|
53
|
+
| `s2s-verify --install-hook` | Installs a `pre-push` hook that runs this on every push. |
|
|
54
|
+
| `s2s-verify --uninstall-hook` | Removes that hook. |
|
|
55
|
+
|
|
56
|
+
Run `s2s-verify --help` for all flags, including `--out`, `--json`, `--quiet` and
|
|
57
|
+
`--fail-on`.
|
|
58
|
+
|
|
59
|
+
## What it checks
|
|
60
|
+
|
|
61
|
+
**Did the tests really run?** Finds your test command — Node (`package.json`, with the package
|
|
62
|
+
manager picked by lockfile), pytest, Django, `go test`, `cargo test`, `mix test`, RSpec, Rake,
|
|
63
|
+
Maven, Gradle, Composer, or a `Makefile` test target — then spawns it as a real child process, and reports the real exit code,
|
|
64
|
+
duration, and test count. The count comes from recognised runner output — `node --test`, jest,
|
|
65
|
+
vitest, mocha — and says `unknown` rather than guessing.
|
|
66
|
+
|
|
67
|
+
Exiting 0 while running **zero** tests is reported as *inconclusive*, not passed. A test command
|
|
68
|
+
that prints reassuring text and exits 0 without executing anything is a common way for work to
|
|
69
|
+
look finished when it isn't.
|
|
70
|
+
|
|
71
|
+
**Does anything look unfinished?** A scan over the lines the diff added:
|
|
72
|
+
|
|
73
|
+
- placeholder markers — `TODO`, `FIXME`, `XXX`, `HACK`, "not implemented" — outside test files
|
|
74
|
+
- empty function bodies, and functions that take arguments but return only a bare constant
|
|
75
|
+
- test files added but never wired into how your test command actually runs
|
|
76
|
+
|
|
77
|
+
Both checks are reported separately, and the difference matters:
|
|
78
|
+
|
|
79
|
+
- **FACTS** are observed directly — a real process, its real exit code. These can't be wrong.
|
|
80
|
+
- **FINDINGS** are pattern matches. Each cites `file:line` so you can dismiss a wrong one in
|
|
81
|
+
seconds.
|
|
82
|
+
|
|
83
|
+
## Limits
|
|
84
|
+
|
|
85
|
+
**Findings are signals, not proof.** They point at shapes unfinished work tends to leave; a
|
|
86
|
+
stub written carefully enough leaves none of them. Treat a clean result as "nothing obvious
|
|
87
|
+
here", not "this is correct".
|
|
88
|
+
|
|
89
|
+
The tool is deliberately tuned to miss things rather than to guess. Flagging the wrong thing
|
|
90
|
+
is a bug worth reporting.
|
|
91
|
+
|
|
92
|
+
**It never judges whether the code does what you meant.** It has no idea what you meant. It
|
|
93
|
+
reports what ran and what looks unfinished, and leaves the judgement to you.
|
|
94
|
+
|
|
95
|
+
**Findings are structural for JavaScript and TypeScript.** In other languages they come from
|
|
96
|
+
pattern matching over the diff instead of a parse, so the shape-based checks
|
|
97
|
+
(`hardcoded-lookup`, reliable `empty-function`) don't apply there yet.
|
|
98
|
+
|
|
99
|
+
**A detected-but-missing runner is a gap, not a failure.** If your project looks like a pytest
|
|
100
|
+
project and `pytest` isn't installed, you get "tests not run", never "tests failed". A missing
|
|
101
|
+
tool is not broken code.
|
|
102
|
+
|
|
103
|
+
Two checks are deliberately narrower than they could be, because a false accusation is worse
|
|
104
|
+
than a missed stub for a tool whose whole job is trust:
|
|
105
|
+
|
|
106
|
+
- Functions returning `null` or `undefined` are never flagged — deliberate no-ops and unset
|
|
107
|
+
defaults are legitimate and common.
|
|
108
|
+
- Only named declarations are scanned for empty bodies, not inline callbacks like
|
|
109
|
+
`.catch(() => {})`.
|
|
110
|
+
|
|
111
|
+
## A note on what "closed source" means here
|
|
112
|
+
|
|
113
|
+
The package ships minified with no sourcemaps. **That is obfuscation, not real closure** —
|
|
114
|
+
anyone determined can read it. The verification *method* is documented here on purpose: you
|
|
115
|
+
should be able to judge the verdict without reading the source, the same way an auditor
|
|
116
|
+
publishes its standards rather than its software.
|
|
117
|
+
|
|
118
|
+
## Verdict JSON schema (`schemaVersion: 3`)
|
|
119
|
+
|
|
120
|
+
Written to `.s2s/verdicts/<YYYY-MM-DD>-<shortsha>.json` on **every completed audit** (including
|
|
121
|
+
an empty diff — that is a real result), and to stdout with `--json`. Suppress with `--no-write`;
|
|
122
|
+
relocate with `--out <dir>`. `.s2s/verdicts/` is appended to `.gitignore` automatically so the
|
|
123
|
+
tool never pollutes your next commit. Only that directory is ignored: spec-to-ship keeps committed
|
|
124
|
+
files elsewhere in `.s2s/`.
|
|
125
|
+
|
|
126
|
+
This is a published artifact under DR-004 — fields are additive within a schema version; a
|
|
127
|
+
breaking change bumps `schemaVersion`.
|
|
128
|
+
|
|
129
|
+
**What changed in v2 (2026-08-12):** v1 collapsed three different things into one `FINDINGS`
|
|
130
|
+
label — a failing test suite, a heuristic guess, and "nothing could be verified". Consumers had
|
|
131
|
+
to string-parse prose to tell them apart. v2 splits them into `factFailures`, `factGaps`, and
|
|
132
|
+
`findings`, and widens `verdict` to four states.
|
|
133
|
+
|
|
134
|
+
**What changed in v3 (2026-09-30):** the rename. `tool` is now `"s2s-verify"` and the default
|
|
135
|
+
directory moved from `.bramo/verdicts` to `.s2s/verdicts`. No other field changed. Verdicts
|
|
136
|
+
written by bramo-verify (v2 and earlier) stay in `.bramo/verdicts`; readers should look in
|
|
137
|
+
`.s2s/verdicts` first and fall back to `.bramo/verdicts`, and accept either `tool` value.
|
|
138
|
+
|
|
139
|
+
| Field | Type | Meaning |
|
|
140
|
+
|---|---|---|
|
|
141
|
+
| `schemaVersion` | `number` | Schema version. Currently `3`. |
|
|
142
|
+
| `tool` | `"s2s-verify"` | Constant. Was `"bramo-verify"` up to schema v2. |
|
|
143
|
+
| `toolVersion` | `string` | The CLI's own package version. |
|
|
144
|
+
| `generatedAt` | `string` | **Local** time with UTC offset, e.g. `2026-08-12T19:05:17-05:00`. Local so two runs a minute apart never straddle a UTC day boundary; offset so it stays unambiguous elsewhere. |
|
|
145
|
+
| `range.mode` | `"range" \| "staged" \| "hook"` | How the diff was selected. |
|
|
146
|
+
| `range.baseline` | `string \| null` | The resolved baseline commit (the merge-base actually audited, not necessarily the ref name given). `null` for `--staged`. |
|
|
147
|
+
| `range.head` | `string \| null` | Always `"HEAD"` for range/hook modes; `null` for `--staged`. |
|
|
148
|
+
| `range.empty` | `boolean` | The audit ran fine but the diff was empty. |
|
|
149
|
+
| `facts.filesChanged` | `number` | Count of files touched by the diff. |
|
|
150
|
+
| `facts.test.exists` | `boolean` | Whether a runnable test command was found. |
|
|
151
|
+
| `facts.test.command` | `string \| null` | The command that was (or would be) run, e.g. `"npm test"`. |
|
|
152
|
+
| `facts.test.ran` | `boolean` | Whether the test command was actually spawned. |
|
|
153
|
+
| `facts.test.reasonNotRun` | `string \| null` | Set when `ran` is `false`. |
|
|
154
|
+
| `facts.test.exitCode` | `number \| null` | The real exit code of the spawned process. |
|
|
155
|
+
| `facts.test.durationMs` | `number \| null` | Wall-clock duration of the spawned process. |
|
|
156
|
+
| `facts.test.passed` | `boolean \| null` | `true` only if the suite exited 0 **and** actually executed at least one test. `null` when the run was vacuous — exiting 0 while running nothing is not passing. |
|
|
157
|
+
| `facts.test.testCount` | `number \| "unknown" \| null` | Best-effort count parsed from recognized runner output; `"unknown"` when no recognized pattern matched (never guessed). |
|
|
158
|
+
| `facts.test.vacuous` | `boolean` | Exited 0 but verified nothing (0 tests, or unparseable output). This is the fake-test-script shape. |
|
|
159
|
+
| `factFailures` | `string[]` | **Objective failures.** The suite ran and failed. Cannot be false positives. |
|
|
160
|
+
| `factGaps` | `string[]` | **Objective gaps.** Nothing could be verified. Not failures — a repo with no tests yet is not a broken repo. |
|
|
161
|
+
| `findings` | `array` | **Heuristic**, evadable, may be wrong — `kind`/`file`/`line`/`detail`, see `src/stubScan.ts`. |
|
|
162
|
+
| `verdict` | `"CLEAN" \| "UNVERIFIED" \| "FINDINGS" \| "FAILED"` | Precedence, highest first: `FAILED` > `FINDINGS` > `UNVERIFIED` > `CLEAN`. Any finding forces at least `FINDINGS` — the anti-stub scan is a hard veto, not a vote. |
|
|
163
|
+
| `summary` | `string` | One plain-English line for humans. |
|
|
164
|
+
| `reasons` | `string[]` | All reasons flattened, for quick display. |
|
|
165
|
+
|
|
166
|
+
## Exit codes
|
|
167
|
+
|
|
168
|
+
A non-zero exit means **"this check did not pass"** — the same convention as `eslint`, `tsc` and
|
|
169
|
+
`pytest`. It does **not** mean s2s-verify crashed. Codes `>= 64` mean the tool could not audit
|
|
170
|
+
at all.
|
|
171
|
+
|
|
172
|
+
| Code | Meaning |
|
|
173
|
+
|---|---|
|
|
174
|
+
| `0` | Passed under the current `--fail-on` policy |
|
|
175
|
+
| `1` | Heuristic findings |
|
|
176
|
+
| `2` | Objective failure — the test suite ran and failed |
|
|
177
|
+
| `3` | Nothing could be verified (only with `--fail-on all`) |
|
|
178
|
+
| `64` | Tool could not run — not a git repo, bad ref, unknown flag |
|
|
179
|
+
|
|
180
|
+
`--fail-on <facts|findings|all|never>` (default `findings`) decides which of these are
|
|
181
|
+
suppressed to `0`. The GitHub Action in brief 002 uses `facts` as its default, so a heuristic
|
|
182
|
+
never red-lights someone's CI.
|
|
183
|
+
|
|
184
|
+
## Coming from bramo-verify
|
|
185
|
+
|
|
186
|
+
`bramo-verify` 0.3.1 was the last release under the old name. To switch:
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
npm uninstall bramo-verify && npm i -D s2s-verify
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
- The package also installs a `bramo-verify` command. It prints a one-line notice on stderr and
|
|
193
|
+
then runs normally, so scripts keep working while you update them.
|
|
194
|
+
- A pre-push hook installed by bramo-verify still calls `npx bramo-verify`. Run
|
|
195
|
+
`s2s-verify --install-hook` to replace it with the new hook. `--uninstall-hook` removes either.
|
|
196
|
+
- New verdicts go to `.s2s/verdicts/`. Old ones stay in `.bramo/verdicts/`, and you can delete
|
|
197
|
+
that directory once you no longer need them.
|
|
198
|
+
|
|
199
|
+
## Development
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
npm install
|
|
203
|
+
npm run typecheck
|
|
204
|
+
npm test # real spawned-process tests, node's own test runner
|
|
205
|
+
npm run build # esbuild bundle to dist/cli.js
|
|
206
|
+
npm run dev -- ... # run the CLI from source via tsx, e.g. `npm run dev -- --help`
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
`evidence/` holds committed transcripts of real runs against real repositories.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Compatibility alias: bramo-verify was renamed to s2s-verify in 0.4.0. Pre-push hooks and scripts
|
|
3
|
+
// that still call `bramo-verify` keep working. The notice goes to stderr so --json output on stdout
|
|
4
|
+
// stays parseable.
|
|
5
|
+
process.stderr.write('bramo-verify is now s2s-verify. This alias still works, but switch to `s2s-verify`.\n');
|
|
6
|
+
await import('../dist/cli.js');
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{execFileSync as Rr}from"node:child_process";import{relative as Ur}from"node:path";import{execFileSync as ke}from"node:child_process";var Mt=class extends Error{};function Q(a,e){try{return ke("git",e,{cwd:a,encoding:"utf8",stdio:["ignore","pipe","pipe"]})}catch(t){let s=t?.stderr?String(t.stderr).trim():String(t?.message??t);throw new Mt(s)}}function Ot(a){try{return Q(a,["rev-parse","--is-inside-work-tree"]).trim()==="true"}catch{return!1}}function ot(a,e){try{return ke("git",["rev-parse","--verify","--quiet",`${e}^{commit}`],{cwd:a,stdio:["ignore","pipe","pipe"]}),!0}catch{return!1}}function ve(a,e){return Q(a,["rev-parse",e]).trim()}function Le(a,e){return Q(a,["rev-parse","--short",e]).trim()}function qs(a,e,t){return Q(a,["merge-base",e,t]).trim()}function De(a,e,t){let s=qs(a,e,t);return{diffText:Q(a,["diff",s,t]),base:s}}function Me(a){return Q(a,["diff","--staged"])}function Oe(a){let e=[],t=null,s=0;for(let i of a.split(`
|
|
3
|
+
`)){let r=i.match(/^diff --git a\/(.+?) b\/(.+)$/);if(r){t={file:r[2],addedLines:[]},e.push(t);continue}let n=i.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);if(n){s=parseInt(n[1],10);continue}t&&(i.startsWith("+++")||i.startsWith("---")||(i.startsWith("+")?(t.addedLines.push({lineNo:s,text:i.slice(1)}),s++):i.startsWith("-")||i.startsWith("\\")||s++))}return e}function Fe(a){return(a.match(/^diff --git a\/.+? b\/.+$/gm)??[]).length}import{existsSync as cr,readFileSync as Ps}from"node:fs";import{join as Ts}from"node:path";var D=class{constructor(e,t,s){this.line=void 0,this.column=void 0,s!==void 0&&(this.index=void 0),this.line=e,this.column=t,s!==void 0&&(this.index=s)}},rt=class{start;end;filename;identifierName;constructor(e,t){this.start=e,this.end=t}};function O(a,e){let{line:t,column:s,index:i}=a;return new D(t,s+e,i+e)}var Be="BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED",zs={ImportMetaOutsideModule:{message:`import.meta may appear only with 'sourceType: "module"'`,code:Be},ImportOutsideModule:{message:`'import' and 'export' may appear only with 'sourceType: "module"'`,code:Be}},Re={ArrayPattern:"array destructuring pattern",AssignmentExpression:"assignment expression",AssignmentPattern:"assignment expression",ArrowFunctionExpression:"arrow function expression",ConditionalExpression:"conditional expression",CatchClause:"catch clause",ForOfStatement:"for-of statement",ForInStatement:"for-in statement",ForStatement:"for-loop",FormalParameters:"function parameter list",Identifier:"identifier",ImportSpecifier:"import specifier",ImportDefaultSpecifier:"import default specifier",ImportNamespaceSpecifier:"import namespace specifier",ObjectPattern:"object destructuring pattern",ParenthesizedExpression:"parenthesized expression",RestElement:"rest element",UpdateExpression:{true:"prefix operation",false:"postfix operation"},VariableDeclarator:"variable declaration",YieldExpression:"yield expression"},bt=a=>a.type==="UpdateExpression"?Re.UpdateExpression[`${a.prefix}`]:Re[a.type],Hs={AccessorIsGenerator:({kind:a})=>`A ${a}ter cannot be a generator.`,ArgumentsInClass:"'arguments' is only allowed in functions and class methods.",AsyncFunctionInSingleStatementContext:"Async functions can only be declared at the top level or inside a block.",AwaitBindingIdentifier:"Can not use 'await' as identifier inside an async function.",AwaitBindingIdentifierInStaticBlock:"Can not use 'await' as identifier inside a static block.",AwaitExpressionFormalParameter:"'await' is not allowed in async function parameters.",AwaitUsingNotInAsyncContext:"'await using' is only allowed within async functions and at the top levels of modules.",AwaitNotInAsyncContext:"'await' is only allowed within async functions and at the top levels of modules.",BadGetterArity:"A 'get' accessor must not have any formal parameters.",BadSetterArity:"A 'set' accessor must have exactly one formal parameter.",BadSetterRestParameter:"A 'set' accessor function argument must not be a rest parameter.",ConstructorClassField:"Classes may not have a field named 'constructor'.",ConstructorClassPrivateField:"Classes may not have a private field named '#constructor'.",ConstructorIsAccessor:"Class constructor may not be an accessor.",ConstructorIsAsync:"Constructor can't be an async function.",ConstructorIsGenerator:"Constructor can't be a generator.",DeclarationMissingInitializer:({kind:a})=>`Missing initializer in ${a} declaration.`,DecoratorArgumentsOutsideParentheses:"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",DecoratorsBeforeAfterExport:"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",DecoratorConstructor:"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",DecoratorSemicolon:"Decorators must not be followed by a semicolon.",DecoratorStaticBlock:"Decorators can't be used with a static block.",DeferImportRequiresNamespace:'Only `import defer * as x from "./module"` is valid.',DeletePrivateField:"Deleting a private field is not allowed.",DestructureNamedImport:"ES2015 named imports do not destructure. Use another statement for destructuring after the import.",DuplicateConstructor:"Duplicate constructor in the same class.",DuplicateDefaultExport:"Only one default export allowed per module.",DuplicateExport:({exportName:a})=>`\`${a}\` has already been exported. Exported identifiers must be unique.`,DuplicateProto:"Redefinition of __proto__ property.",DuplicateRegExpFlags:"Duplicate regular expression flag.",ElementAfterRest:"Rest element must be last element.",EscapedCharNotAnIdentifier:"Invalid Unicode escape.",ExportBindingIsString:({localName:a,exportName:e})=>`A string literal cannot be used as an exported binding without \`from\`.
|
|
4
|
+
- Did you mean \`export { '${a}' as '${e}' } from 'some-module'\`?`,ExportDefaultFromAsIdentifier:"'from' is not allowed as an identifier after 'export default'.",ForInOfLoopInitializer:({type:a})=>`'${a==="ForInStatement"?"for-in":"for-of"}' loop variable declaration may not have an initializer.`,ForInUsing:"For-in loop may not start with 'using' declaration.",ForOfAsync:"The left-hand side of a for-of loop may not be 'async'.",ForOfLet:"The left-hand side of a for-of loop may not start with 'let'.",GeneratorInSingleStatementContext:"Generators can only be declared at the top level or inside a block.",IllegalBreakContinue:({type:a})=>`Unsyntactic ${a==="BreakStatement"?"break":"continue"}.`,IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list.",IllegalReturn:"'return' outside of function.",ImportBindingIsString:({importName:a})=>`A string literal cannot be used as an imported binding.
|
|
5
|
+
- Did you mean \`import { "${a}" as foo }\`?`,ImportCallArity:({phase:a})=>`\`import${a?`.${a}`:""}()\` requires exactly one or two arguments.`,ImportCallNotNewExpression:({phase:a})=>`Cannot use new with import${a?`.${a}`:""}().`,ImportCallSpreadArgument:({phase:a})=>`\`...\` is not allowed in \`import${a?`.${a}`:""}()\`.`,IncompatibleRegExpUVFlags:"The 'u' and 'v' regular expression flags cannot be enabled at the same time.",InvalidBigIntLiteral:"Invalid BigIntLiteral.",InvalidCodePoint:"Code point out of bounds.",InvalidCoverDiscardElement:"'void' must be followed by an expression when not used in a binding position.",InvalidCoverInitializedName:"Invalid shorthand property initializer.",InvalidDigit:({radix:a})=>`Expected number in radix ${a}.`,InvalidEscapeSequence:"Bad character escape sequence.",InvalidEscapeSequenceTemplate:"Invalid escape sequence in template.",InvalidEscapedReservedWord:({reservedWord:a})=>`Escape sequence in keyword ${a}.`,InvalidIdentifier:({identifierName:a})=>`Invalid identifier ${a}.`,InvalidLhs:({ancestor:a})=>`Invalid left-hand side in ${bt(a)}.`,InvalidLhsBinding:({ancestor:a})=>`Binding invalid left-hand side in ${bt(a)}.`,InvalidLhsOptionalChaining:({ancestor:a})=>`Invalid optional chaining in the left-hand side of ${bt(a)}.`,InvalidNumber:"Invalid number.",InvalidOrMissingExponent:"Floating-point numbers require a valid exponent after the 'e'.",InvalidOrUnexpectedToken:({unexpected:a})=>`Unexpected character '${a}'.`,InvalidParenthesizedAssignment:"Invalid parenthesized assignment pattern.",InvalidPrivateFieldResolution:({identifierName:a})=>`Private name #${a} is not defined.`,InvalidPropertyBindingPattern:"Binding member expression.",InvalidRestAssignmentPattern:"Invalid rest operator's argument.",LabelRedeclaration:({labelName:a})=>`Label '${a}' is already declared.`,LetInLexicalBinding:"'let' is disallowed as a lexically bound name.",LineTerminatorBeforeArrow:"No line break is allowed before '=>'.",MalformedRegExpFlags:"Invalid regular expression flag.",MissingClassName:"A class name is required.",MissingEqInAssignment:"Only '=' operator can be used for specifying default value.",MissingSemicolon:"Missing semicolon.",MissingPlugin:({missingPlugin:a})=>`This experimental syntax requires enabling the parser plugin: ${a.map(e=>JSON.stringify(e)).join(", ")}.`,MissingOneOfPlugins:({missingPlugin:a})=>`This experimental syntax requires enabling one of the following parser plugin(s): ${a.map(e=>JSON.stringify(e)).join(", ")}.`,MissingUnicodeEscape:"Expecting Unicode escape sequence \\uXXXX.",MixingCoalesceWithLogical:"Nullish coalescing operator(??) requires parens when mixing with logical operators.",ModuleAttributeInvalidValue:"Only string literals are allowed as module attribute values.",ModuleAttributesWithDuplicateKeys:({key:a})=>`Duplicate key "${a}" is not allowed in module attributes.`,ModuleExportNameHasLoneSurrogate:({surrogateCharCode:a})=>`An export name cannot include a lone surrogate, found '\\u${a.toString(16)}'.`,ModuleExportUndefined:({localName:a})=>`Export '${a}' is not defined.`,MultipleDefaultsInSwitch:"Multiple default clauses.",NewlineAfterThrow:"Illegal newline after throw.",NoCatchOrFinally:"Missing catch or finally clause.",NumberIdentifier:"Identifier directly after number.",NumericSeparatorInEscapeSequence:"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",ObsoleteAwaitStar:"'await*' has been removed from the async functions proposal. Use Promise.all() instead.",OptionalChainingNoNew:"Constructors in/after an Optional Chain are not allowed.",OptionalChainingNoTemplate:"Tagged Template Literals are not allowed in optionalChain.",OverrideOnConstructor:"'override' modifier cannot appear on a constructor declaration.",ParamDupe:"Argument name clash.",PatternHasAccessor:"Object pattern can't contain getter or setter.",PatternHasMethod:"Object pattern can't contain methods.",PrivateInExpectedIn:({identifierName:a})=>`Private names are only allowed in property accesses (\`obj.#${a}\`) or in \`in\` expressions (\`#${a} in obj\`).`,PrivateNameRedeclaration:({identifierName:a})=>`Duplicate private name #${a}.`,RestTrailingComma:"Unexpected trailing comma after rest element.",SloppyFunction:"In non-strict mode code, functions can only be declared at top level or inside a block.",SloppyFunctionAnnexB:"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",SourcePhaseImportRequiresDefault:'Only `import source x from "./module"` is valid.',StaticPrototype:"Classes may not have static property named prototype.",SuperCallNotNewExpression:"Cannot use new with super(...).",SuperNotAllowed:"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",SuperPrivateField:"Private fields can't be accessed on super.",TrailingDecorator:"Decorators must be attached to a class element.",UnexpectedArgumentPlaceholder:"Unexpected argument placeholder.",UnexpectedDigitAfterHash:"Unexpected digit after hash token.",UnexpectedImportExport:"'import' and 'export' may only appear at the top level.",UnexpectedKeyword:({keyword:a})=>`Unexpected keyword '${a}'.`,UnexpectedLeadingDecorator:"Leading decorators must be attached to a class declaration.",UnexpectedLexicalDeclaration:"Lexical declaration cannot appear in a single-statement context.",UnexpectedNewTarget:"`new.target` can only be used in functions or class properties.",UnexpectedNumericSeparator:"A numeric separator is only allowed between two digits.",UnexpectedPrivateField:"Unexpected private name.",UnexpectedReservedWord:({reservedWord:a})=>`Unexpected reserved word '${a}'.`,UnexpectedSuper:"'super' is only allowed in object methods and classes.",UnexpectedToken:({expected:a,unexpected:e})=>`Unexpected token${e?` '${e}'.`:""}${a?`, expected "${a}"`:""}`,UnexpectedTokenUnaryExponentiation:"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",UnexpectedUsingDeclaration:"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.",UnexpectedVoidPattern:"Unexpected void binding.",UnsupportedDecoratorExport:"A decorated export must export a class declaration.",UnsupportedDefaultExport:"Only expressions, functions or classes are allowed as the `default` export.",UnsupportedImport:"`import` can only be used in `import()` or `import.meta`.",UnsupportedMetaProperty:({target:a,onlyValidPropertyName:e})=>`The only valid meta property for ${a} is ${a}.${e}.`,UnsupportedParameterDecorator:"Decorators cannot be used to decorate parameters.",UnsupportedPropertyDecorator:"Decorators cannot be used to decorate object literal properties.",UnsupportedSuper:"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",UnterminatedComment:"Unterminated comment.",UnterminatedRegExp:"Unterminated regular expression.",UnterminatedString:"Unterminated string constant.",UnterminatedTemplate:"Unterminated template.",UsingDeclarationExport:"Using declaration cannot be exported.",UsingDeclarationHasBindingPattern:"Using declaration cannot have destructuring patterns.",VarRedeclaration:({identifierName:a})=>`Identifier '${a}' has already been declared.`,VoidPatternCatchClauseParam:"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.",VoidPatternInitializer:"A void binding may not have an initializer.",YieldBindingIdentifier:"Can not use 'yield' as identifier inside a generator.",YieldInParameter:"Yield expression is not allowed in formal parameters.",YieldNotInGeneratorFunction:"'yield' is only allowed within generator functions.",ZeroDigitNumericSeparator:"Numeric separator can not be used after leading 0."},Ks={StrictDelete:"Deleting local variable in strict mode.",StrictEvalArguments:({referenceName:a})=>`Assigning to '${a}' in strict mode.`,StrictEvalArgumentsBinding:({bindingName:a})=>`Binding '${a}' in strict mode.`,StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block.",StrictNumericEscape:"The only valid numeric escape in strict mode is '\\0'.",StrictOctalLiteral:"Legacy octal literals are not allowed in strict mode.",StrictWith:"'with' in strict mode."},Ws={ParseExpressionEmptyInput:"Unexpected parseExpression() input: The input is empty or contains only comments.",ParseExpressionExpectsEOF:({unexpected:a})=>`Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(a)}\`.`},Js=new Set(["ArrowFunctionExpression","AssignmentExpression","ConditionalExpression","YieldExpression"]),Xs={PipeTopicRequiresHackPipes:'Topic references are only supported when using the `"proposal": "hack"` version of the pipeline proposal.',PipeTopicUnbound:"Topic reference is unbound; it must be inside a pipe body.",PipeTopicUnconfiguredToken:({token:a})=>`Invalid topic token ${a}. In order to use ${a} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${a}" }.`,PipeTopicUnused:"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",PipeUnparenthesizedBody:({type:a})=>`Hack-style pipe body cannot be an unparenthesized ${bt({type:a})}; please wrap it in parentheses.`,PipelineUnparenthesized:"Cannot mix binary operator with solo-await F#-style pipeline. Please wrap the pipeline in parentheses."},Gs={UnsupportedBind:"Binding should be performed on object property.",UnsupportedBindRHS:"The right-hand side of binding can not be super or import."};function Ue(a,e,t){Object.defineProperty(a,e,{enumerable:!1,configurable:!0,value:t})}function Ys({toMessage:a,code:e,reasonCode:t,syntaxPlugin:s}){let i=t==="MissingPlugin"||t==="MissingOneOfPlugins";return function r(n,o,h){let l=new SyntaxError;return l.code=e,l.reasonCode=t,l.loc=n,l.pos=o,l.syntaxPlugin=s,i&&(l.missingPlugin=h.missingPlugin),Ue(l,"clone",function(u={}){let{line:f,column:m,index:P=o}=u.loc??n;return r(new D(f,m),P,{...h,...u.details})}),Ue(l,"details",h),Object.defineProperty(l,"message",{configurable:!0,get(){let p=`${a(h)} (${n.line}:${n.column})`;return this.message=p,p},set(p){Object.defineProperty(this,"message",{value:p,writable:!0})}}),l}}function R(a,e){if(Array.isArray(a))return s=>R(s,a[0]);let t={};for(let s of Object.keys(a)){let i=a[s],{message:r,...n}=typeof i=="string"?{message:()=>i}:typeof i=="function"?{message:i}:i,o=typeof r=="string"?()=>r:r;t[s]=Ys({code:"BABEL_PARSER_SYNTAX_ERROR",reasonCode:s,toMessage:o,...e?{syntaxPlugin:e}:{},...n})}return t}var c={...R(zs),...R(Hs),...R(Ks),...R(Ws),...R`pipelineOperator`(Xs),...R`functionBind`(Gs)};function Qs(){return{sourceType:"script",sourceFilename:void 0,startIndex:0,startColumn:0,startLine:1,allowAwaitOutsideFunction:!1,allowReturnOutsideFunction:!1,allowNewTargetOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,allowUndeclaredExports:!1,allowYieldOutsideFunction:!1,plugins:[],strictMode:void 0,ranges:!1,locations:!0,tokens:!1,createImportExpressions:!0,createParenthesizedExpressions:!1,errorRecovery:!1,attachComment:!0,annexB:!0}}function Zs(a){let e=Qs();if(a==null)return e;if(a.annexB!=null&&a.annexB!==!1)throw new Error("The `annexB` option can only be set to `false`.");for(let t of Object.keys(e))a[t]!=null&&(e[t]=a[t]);if(e.startLine===1)a.startIndex==null&&e.startColumn>0?e.startIndex=e.startColumn:a.startColumn==null&&e.startIndex>0&&(e.startColumn=e.startIndex);else if(a.startColumn==null||a.startIndex==null)throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`.");if(e.sourceType==="commonjs"){if(a.allowAwaitOutsideFunction!=null)throw new Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.");if(a.allowReturnOutsideFunction!=null)throw new Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.");if(a.allowNewTargetOutsideFunction!=null)throw new Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.")}return e}function Z(a){let{start:e,end:t}=a.loc;return a.loc.start=new D(e.line,e.column),a.loc.end=new D(t.line,t.column),a}var ti=a=>class extends a{createPosition(t){return new D(t.line,t.column)}parse(){let t=super.parse();return this.optionFlags&512&&(t.tokens=t.tokens.map(Z)),Z(t)}parseRegExpLiteral({pattern:t,flags:s}){let i=null;try{i=new RegExp(t,s)}catch{}let r=this.estreeParseLiteral(i);return r.regex={pattern:t,flags:s},r}parseBigIntLiteral(t){let s;try{s=BigInt(t)}catch{s=null}let i=this.estreeParseLiteral(s);return i.bigint=String(i.value||t),i}estreeParseLiteral(t){return this.parseLiteral(t,"Literal")}parseStringLiteral(t){return this.estreeParseLiteral(t)}parseNumericLiteral(t){return this.estreeParseLiteral(t)}parseNullLiteral(){return this.estreeParseLiteral(null)}parseBooleanLiteral(t){return this.estreeParseLiteral(t)}estreeParseChainExpression(t,s){let i=this.startNodeAtNode(t);return i.expression=t,this.finishNodeAtNode(i,"ChainExpression",s)}directiveToStmt(t){let s=t.value;delete t.value,this.castNodeTo(s,"Literal"),s.raw=s.extra.raw,s.value=s.extra.expressionValue;let i=this.castNodeTo(t,"ExpressionStatement");return i.expression=s,i.directive=s.extra.rawValue,delete s.extra,i}fillOptionalPropertiesForTSESLint(t){}cloneEstreeStringLiteral(t){let{start:s,end:i,loc:r,range:n,raw:o,value:h}=t,l=Object.create(t.constructor.prototype);return l.type="Literal",l.start=s,l.end=i,l.loc=r,l.range=n,l.raw=o,l.value=h,l}initFunction(t,s){super.initFunction(t,s),t.expression=!1}checkDeclaration(t){t!=null&&this.isObjectProperty(t)?this.checkDeclaration(t.value):super.checkDeclaration(t)}getObjectOrClassMethodParams(t){return t.value.params}isValidDirective(t){return t.type==="ExpressionStatement"&&t.expression.type==="Literal"&&typeof t.expression.value=="string"&&!t.expression.extra?.parenthesized}parseBlockBody(t,s,i,r,n){super.parseBlockBody(t,s,i,r,n);let o=t.directives.map(h=>this.directiveToStmt(h));t.body=o.concat(t.body),delete t.directives}parsePrivateName(){let t=super.parsePrivateName();return this.convertPrivateNameToPrivateIdentifier(t)}convertPrivateNameToPrivateIdentifier(t){let s=super.getPrivateNameSV(t);return delete t.id,t.name=s,this.castNodeTo(t,"PrivateIdentifier")}isPrivateName(t){return t.type==="PrivateIdentifier"}getPrivateNameSV(t){return t.name}parseLiteral(t,s){let i=super.parseLiteral(t,s);return i.raw=i.extra.raw,delete i.extra,i}parseFunctionBody(t,s,i=!1){super.parseFunctionBody(t,s,i),t.expression=t.body.type!=="BlockStatement"}parseMethod(t,s,i,r,n,o,h=!1){let l=this.startNode();l.kind=t.kind,l=super.parseMethod(l,s,i,r,n,o,h),delete l.kind;let{typeParameters:p}=t;p&&(delete t.typeParameters,l.typeParameters=p,this.resetStartLocationFromNode(l,p));let u=this.castNodeTo(l,this.hasPlugin("typescript")&&!l.body?"TSEmptyBodyFunctionExpression":"FunctionExpression");return t.value=u,o==="ClassPrivateMethod"&&(t.computed=!1),this.hasPlugin("typescript")&&t.abstract?(delete t.abstract,this.finishNode(t,"TSAbstractMethodDefinition")):o==="ObjectMethod"?(t.kind==="method"&&(t.kind="init"),t.shorthand=!1,this.finishNode(t,"Property")):this.finishNode(t,"MethodDefinition")}nameIsConstructor(t){return t.type==="Literal"?t.value==="constructor":super.nameIsConstructor(t)}parseClassProperty(...t){let s=super.parseClassProperty(...t);return s.abstract&&this.hasPlugin("typescript")?(delete s.abstract,this.castNodeTo(s,"TSAbstractPropertyDefinition")):this.castNodeTo(s,"PropertyDefinition"),s}parseClassPrivateProperty(...t){let s=super.parseClassPrivateProperty(...t);return s.abstract&&this.hasPlugin("typescript")?this.castNodeTo(s,"TSAbstractPropertyDefinition"):this.castNodeTo(s,"PropertyDefinition"),s.computed=!1,s}parseClassAccessorProperty(t){let s=super.parseClassAccessorProperty(t);return s.abstract&&this.hasPlugin("typescript")?(delete s.abstract,this.castNodeTo(s,"TSAbstractAccessorProperty")):this.castNodeTo(s,"AccessorProperty"),s}parseObjectProperty(t,s,i,r){let n=super.parseObjectProperty(t,s,i,r);return n&&(n.kind="init",this.castNodeTo(n,"Property")),n}finishObjectProperty(t){return t.kind="init",this.finishNode(t,"Property")}isValidLVal(t,s,i,r){return t==="Property"?"value":super.isValidLVal(t,s,i,r)}isAssignable(t,s){return t!=null&&this.isObjectProperty(t)?this.isAssignable(t.value,s):super.isAssignable(t,s)}toAssignable(t,s=!1){if(t!=null&&this.isObjectProperty(t)){let{key:i,value:r}=t;this.isPrivateName(i)&&this.classScope.usePrivateName(this.getPrivateNameSV(i),i.start),this.toAssignable(r,s)}else super.toAssignable(t,s)}toAssignableObjectExpressionProp(t,s,i){t.type==="Property"&&(t.kind==="get"||t.kind==="set")?this.raise(c.PatternHasAccessor,t.key):t.type==="Property"&&t.method?this.raise(c.PatternHasMethod,t.key):super.toAssignableObjectExpressionProp(t,s,i)}finishCallExpression(t,s){let i=super.finishCallExpression(t,s);return i.callee.type==="Import"?(this.castNodeTo(i,"ImportExpression"),i.source=i.arguments[0],i.options=i.arguments[1]??null,delete i.arguments,delete i.callee):i.type==="OptionalCallExpression"?this.castNodeTo(i,"CallExpression"):i.optional=!1,i}parseExport(t,s){let i=this.state.lastTokStartLoc,r=super.parseExport(t,s);switch(r.type){case"ExportAllDeclaration":r.exported=null;break;case"ExportNamedDeclaration":r.specifiers.length===1&&r.specifiers[0].type==="ExportNamespaceSpecifier"&&(this.castNodeTo(r,"ExportAllDeclaration"),r.exported=r.specifiers[0].exported,delete r.specifiers);case"ExportDefaultDeclaration":{let{declaration:n}=r;n?.type==="ClassDeclaration"&&n.decorators?.length>0&&n.start===r.start&&this.resetStartLocation(r,i)}break}return r}stopParseSubscript(t,s){let i=super.stopParseSubscript(t,s);return s.optionalChainMember?this.estreeParseChainExpression(i,t):i}parseMember(t,s,i,r,n){let o=super.parseMember(t,s,i,r,n);return o.type==="OptionalMemberExpression"?this.castNodeTo(o,"MemberExpression"):o.optional=!1,o}isOptionalMemberExpression(t){return t.type==="ChainExpression"?t.expression.type==="MemberExpression":super.isOptionalMemberExpression(t)}hasPropertyAsPrivateName(t){return t.type==="ChainExpression"&&(t=t.expression),super.hasPropertyAsPrivateName(t)}isObjectProperty(t){return t.type==="Property"&&t.kind==="init"&&!t.method}isObjectMethod(t){return t.type==="Property"&&(t.method||t.kind==="get"||t.kind==="set")}castNodeTo(t,s){let i=super.castNodeTo(t,s);return this.fillOptionalPropertiesForTSESLint(i),i}cloneIdentifier(t){let s=super.cloneIdentifier(t);return this.fillOptionalPropertiesForTSESLint(s),s}cloneStringLiteral(t){return t.type==="Literal"?this.cloneEstreeStringLiteral(t):super.cloneStringLiteral(t)}finishNodeAt(t,s,i){return Z(super.finishNodeAt(t,s,i))}finishNodeAtNode(t,s,i){return Z(super.finishNodeAtNode(t,s,i))}finishNode(t,s){let i=super.finishNode(t,s);return this.fillOptionalPropertiesForTSESLint(i),i}resetStartLocation(t,s){super.resetStartLocation(t,s),Z(t)}resetEndLocation(t,s=this.state.lastTokEndLoc){super.resetEndLocation(t,s),Z(t)}},A=!0,y=!0,Ft=!0,ht=!0,z=!0,ei=!0,It=class{label;keyword;beforeExpr;startsExpr;rightAssociative;isLoop;isAssign;prefix;postfix;binop;constructor(e,t={}){this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.rightAssociative=!!t.rightAssociative,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop!=null?t.binop:null}},ce=new Map;function b(a,e={}){e.keyword=a;let t=g(a,e);return ce.set(a,t),t}function M(a,e){return g(a,{beforeExpr:A,binop:e})}var pt=-1,pe=[],ue=[],fe=[],de=[],me=[],ye=[];function g(a,e={}){return++pt,ue.push(a),fe.push(e.binop??-1),de.push(e.beforeExpr??!1),me.push(e.startsExpr??!1),ye.push(e.prefix??!1),pe.push(new It(a,e)),pt}function T(a,e={}){return++pt,ce.set(a,pt),ue.push(a),fe.push(e.binop??-1),de.push(e.beforeExpr??!1),me.push(e.startsExpr??!1),ye.push(e.prefix??!1),pe.push(new It("name",e)),pt}var si={bracketL:g("[",{beforeExpr:A,startsExpr:y}),bracketR:g("]"),braceL:g("{",{beforeExpr:A,startsExpr:y}),braceBarL:g("{|",{beforeExpr:A,startsExpr:y}),braceR:g("}"),braceBarR:g("|}"),parenL:g("(",{beforeExpr:A,startsExpr:y}),parenR:g(")"),comma:g(",",{beforeExpr:A}),semi:g(";",{beforeExpr:A}),colon:g(":",{beforeExpr:A}),doubleColon:g("::",{beforeExpr:A}),dot:g("."),question:g("?",{beforeExpr:A}),questionDot:g("?."),arrow:g("=>",{beforeExpr:A}),template:g("template"),ellipsis:g("...",{beforeExpr:A}),backQuote:g("`",{startsExpr:y}),dollarBraceL:g("${",{beforeExpr:A,startsExpr:y}),templateTail:g("...`",{startsExpr:y}),templateNonTail:g("...${",{beforeExpr:A,startsExpr:y}),at:g("@"),hash:g("#",{startsExpr:y}),interpreterDirective:g("#!..."),eq:g("=",{beforeExpr:A,isAssign:ht}),assign:g("_=",{beforeExpr:A,isAssign:ht}),slashAssign:g("_=",{beforeExpr:A,isAssign:ht}),xorAssign:g("_=",{beforeExpr:A,isAssign:ht}),moduloAssign:g("_=",{beforeExpr:A,isAssign:ht}),incDec:g("++/--",{prefix:z,postfix:ei,startsExpr:y}),bang:g("!",{beforeExpr:A,prefix:z,startsExpr:y}),tilde:g("~",{beforeExpr:A,prefix:z,startsExpr:y}),doubleCaret:g("^^",{startsExpr:y}),doubleAt:g("@@",{startsExpr:y}),pipeline:M("|>",0),nullishCoalescing:M("??",1),logicalOR:M("||",1),logicalAND:M("&&",2),bitwiseOR:M("|",3),bitwiseXOR:M("^",4),bitwiseAND:M("&",5),equality:M("==/!=/===/!==",6),lt:M("</>/<=/>=",7),gt:M("</>/<=/>=",7),relational:M("</>/<=/>=",7),bitShift:M("<</>>/>>>",8),bitShiftL:M("<</>>/>>>",8),bitShiftR:M("<</>>/>>>",8),plusMin:g("+/-",{beforeExpr:A,binop:9,prefix:z,startsExpr:y}),modulo:g("%",{binop:10,startsExpr:y}),star:g("*",{binop:10}),slash:M("/",10),exponent:g("**",{beforeExpr:A,binop:11,rightAssociative:!0}),_in:b("in",{beforeExpr:A,binop:7}),_instanceof:b("instanceof",{beforeExpr:A,binop:7}),_break:b("break"),_case:b("case",{beforeExpr:A}),_catch:b("catch"),_continue:b("continue"),_debugger:b("debugger"),_default:b("default",{beforeExpr:A}),_else:b("else",{beforeExpr:A}),_finally:b("finally"),_function:b("function",{startsExpr:y}),_if:b("if"),_return:b("return",{beforeExpr:A}),_switch:b("switch"),_throw:b("throw",{beforeExpr:A,prefix:z,startsExpr:y}),_try:b("try"),_var:b("var"),_const:b("const"),_with:b("with"),_new:b("new",{beforeExpr:A,startsExpr:y}),_this:b("this",{startsExpr:y}),_super:b("super",{startsExpr:y}),_class:b("class",{startsExpr:y}),_extends:b("extends",{beforeExpr:A}),_export:b("export"),_import:b("import",{startsExpr:y}),_null:b("null",{startsExpr:y}),_true:b("true",{startsExpr:y}),_false:b("false",{startsExpr:y}),_typeof:b("typeof",{beforeExpr:A,prefix:z,startsExpr:y}),_void:b("void",{beforeExpr:A,prefix:z,startsExpr:y}),_delete:b("delete",{beforeExpr:A,prefix:z,startsExpr:y}),_do:b("do",{isLoop:Ft,beforeExpr:A}),_for:b("for",{isLoop:Ft}),_while:b("while",{isLoop:Ft}),_as:T("as",{startsExpr:y}),_assert:T("assert",{startsExpr:y}),_async:T("async",{startsExpr:y}),_await:T("await",{startsExpr:y}),_defer:T("defer",{startsExpr:y}),_from:T("from",{startsExpr:y}),_get:T("get",{startsExpr:y}),_let:T("let",{startsExpr:y}),_meta:T("meta",{startsExpr:y}),_of:T("of",{startsExpr:y}),_sent:T("sent",{startsExpr:y}),_set:T("set",{startsExpr:y}),_source:T("source",{startsExpr:y}),_static:T("static",{startsExpr:y}),_using:T("using",{startsExpr:y}),_yield:T("yield",{startsExpr:y}),_asserts:T("asserts",{startsExpr:y}),_checks:T("checks",{startsExpr:y}),_exports:T("exports",{startsExpr:y}),_global:T("global",{startsExpr:y}),_implements:T("implements",{startsExpr:y}),_intrinsic:T("intrinsic",{startsExpr:y}),_infer:T("infer",{startsExpr:y}),_is:T("is",{startsExpr:y}),_mixins:T("mixins",{startsExpr:y}),_proto:T("proto",{startsExpr:y}),_require:T("require",{startsExpr:y}),_satisfies:T("satisfies",{startsExpr:y}),_keyof:T("keyof",{startsExpr:y}),_readonly:T("readonly",{startsExpr:y}),_unique:T("unique",{startsExpr:y}),_abstract:T("abstract",{startsExpr:y}),_declare:T("declare",{startsExpr:y}),_enum:T("enum",{startsExpr:y}),_module:T("module",{startsExpr:y}),_namespace:T("namespace",{startsExpr:y}),_interface:T("interface",{startsExpr:y}),_type:T("type",{startsExpr:y}),_opaque:T("opaque",{startsExpr:y}),name:g("name",{startsExpr:y}),placeholder:g("%%",{startsExpr:y}),string:g("string",{startsExpr:y}),num:g("num",{startsExpr:y}),bigint:g("bigint",{startsExpr:y}),regexp:g("regexp",{startsExpr:y}),privateName:g("#name",{startsExpr:y}),eof:g("eof"),jsxName:g("jsxName"),jsxText:g("jsxText",{beforeExpr:A}),jsxTagStart:g("jsxTagStart",{startsExpr:y}),jsxTagEnd:g("jsxTagEnd")};function C(a){return a>=89&&a<=129}function ii(a){return a<=88}function U(a){return a>=54&&a<=129}function ts(a){return a>=54&&a<=132}function ri(a){return de[a]}function ct(a){return me[a]}function ai(a){return a>=25&&a<=29}function je(a){return a>=125&&a<=127}function ni(a){return a>=86&&a<=88}function xe(a){return a>=54&&a<=88}function _e(a){return a>=35&&a<=55}function oi(a){return a===30}function hi(a){return ye[a]}function li(a){return a>=117&&a<=119}function ci(a){return a>=120&&a<=126}function W(a){return ue[a]}function St(a){return fe[a]}function pi(a){return a===53}function $t(a){return a>=20&&a<=21}function es(a){return pe[a]}var tt=class{constructor(e,t){this.token=e,this.preserveSpace=!!t}token;preserveSpace},E={brace:new tt("{"),j_oTag:new tt("<tag"),j_cTag:new tt("</tag"),j_expr:new tt("<tag>...</tag>",!0)},$e=/[\p{ID_Start}\u088f\u0c5c\u0cdc\ua7ce\ua7cf\ua7d2\ua7d4\ua7f1]/u,Ve=/[\p{ID_Continue}\u088f\u0c5c\u0cdc\ua7ce\ua7cf\ua7d2\ua7d4\ua7f1\u1acf-\u1add\u1ae0-\u1aeb]/u,ss=[2368,25,1388,2,3817,43,20677,24,3,24,287,4,6146,7,1290,21,98,114,22734,30,2,2,2,1,2,6,3,4,10,1,53307,5,5987,11,21763,4297],ui=[3834,1,3173,7,633,9,51450,0,3,0,8,1,6,0];function Vt(a,e){let t=65536;for(let s=0,i=e.length;s<i;s+=2){if(t+=e[s],t>a)return!1;if(t+=e[s+1],t>=a)return!0}return!1}function _(a){return a<65?a===36:a<=90?!0:a<97?a===95:a<=122?!0:a<=65535?a>=170&&$e.test(String.fromCharCode(a)):!isNaN(a)&&a<=1114111&&($e.test(String.fromCodePoint(a))||Vt(a,ss))}function G(a){return a<48?a===36:a<58?!0:a<65?!1:a<=90?!0:a<97?a===95:a<=122?!0:a<=65535?a>=170&&Ve.test(String.fromCharCode(a)):!isNaN(a)&&a<=1114111&&(Ve.test(String.fromCodePoint(a))||Vt(a,ss)||Vt(a,ui))}var ge={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]},fi=new Set(ge.keyword),di=new Set(ge.strict),mi=new Set(ge.strictBind);function is(a,e){return e&&a==="await"||a==="enum"}function rs(a,e){return is(a,e)||di.has(a)}function as(a){return mi.has(a)}function ns(a,e){return rs(a,e)||as(a)}function yi(a){return fi.has(a)}function xi(a,e,t){return a===64&&e===64&&_(t)}var gi=new Set(["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete","implements","interface","let","package","private","protected","public","static","yield","eval","arguments","enum","await"]);function Pi(a){return gi.has(a)}var ut=class{flags=0;names=new Map;firstLexicalName="";constructor(e){this.flags=e}},ft=class{parser;scopeStack=[];inModule;undefinedExports=new Map;constructor(e,t){this.parser=e,this.inModule=t}get inTopLevel(){return(this.currentScope().flags&1)>0}get inFunction(){return(this.currentVarScopeFlags()&2)>0}get allowSuper(){return(this.currentThisScopeFlags()&16)>0}get allowDirectSuper(){return(this.currentThisScopeFlags()&32)>0}get allowNewTarget(){return(this.currentThisScopeFlags()&512)>0}get inClass(){return(this.currentThisScopeFlags()&64)>0}get inClassAndNotInNonArrowFunction(){let e=this.currentThisScopeFlags();return(e&64)>0&&(e&2)===0}get inStaticBlock(){for(let e=this.scopeStack.length-1;;e--){let{flags:t}=this.scopeStack[e];if(t&128)return!0;if(t&3779)return!1}}get inNonArrowFunction(){return(this.currentThisScopeFlags()&2)>0}get inBareCaseStatement(){return(this.currentScope().flags&256)>0}get treatFunctionsAsVar(){return this.treatFunctionsAsVarInScope(this.currentScope())}createScope(e){return new ut(e)}enter(e){this.scopeStack.push(this.createScope(e))}exit(){return this.scopeStack.pop().flags}treatFunctionsAsVarInScope(e){return!!(e.flags&130||!this.parser.inModule&&e.flags&1)}declareName(e,t,s){let i=this.currentScope();if(t&8||t&16){this.checkRedeclarationInScope(i,e,t,s);let r=i.names.get(e)||0;t&16?r=r|4:(i.firstLexicalName||(i.firstLexicalName=e),r=r|2),i.names.set(e,r),t&8&&this.maybeExportDefined(i,e)}else if(t&4)for(let r=this.scopeStack.length-1;r>=0&&(i=this.scopeStack[r],this.checkRedeclarationInScope(i,e,t,s),i.names.set(e,(i.names.get(e)||0)|1),this.maybeExportDefined(i,e),!(i.flags&3715));--r);this.parser.inModule&&i.flags&1&&this.undefinedExports.delete(e)}maybeExportDefined(e,t){this.parser.inModule&&e.flags&1&&this.undefinedExports.delete(t)}checkRedeclarationInScope(e,t,s,i){this.isRedeclaredInScope(e,t,s)&&this.parser.raise(c.VarRedeclaration,i,{identifierName:t})}isRedeclaredInScope(e,t,s){if(!(s&1))return!1;if(s&8)return e.names.has(t);let i=e.names.get(t)||0;return s&16?(i&2)>0||!this.treatFunctionsAsVarInScope(e)&&(i&1)>0:(i&2)>0&&!(e.flags&8&&e.firstLexicalName===t)||!this.treatFunctionsAsVarInScope(e)&&(i&4)>0}checkLocalExport(e){let{name:t}=e;this.scopeStack[0].names.has(t)||this.undefinedExports.set(t,e.start)}currentScope(){return this.scopeStack[this.scopeStack.length-1]}currentVarScopeFlags(){for(let e=this.scopeStack.length-1;;e--){let{flags:t}=this.scopeStack[e];if(t&3715)return t}}currentThisScopeFlags(){for(let e=this.scopeStack.length-1;;e--){let{flags:t}=this.scopeStack[e];if(t&3779&&!(t&4))return t}}},qt=class extends ut{declareFunctions=new Set},zt=class extends ft{createScope(e){return new qt(e)}declareName(e,t,s){let i=this.currentScope();if(t&2048){this.checkRedeclarationInScope(i,e,t,s),this.maybeExportDefined(i,e),i.declareFunctions.add(e);return}super.declareName(e,t,s)}isRedeclaredInScope(e,t,s){if(super.isRedeclaredInScope(e,t,s))return!0;if(s&2048&&!e.declareFunctions.has(t)){let i=e.names.get(t);return(i&4)>0||(i&2)>0}return!1}checkLocalExport(e){this.scopeStack[0].declareFunctions.has(e.name)||super.checkLocalExport(e)}},Ti=new Set(["_","any","bool","boolean","empty","extends","false","interface","mixed","null","number","static","string","true","typeof","void"]),Ai={AmbiguousConditionalArrow:"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",AmbiguousDeclareModuleKind:"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",AssignReservedType:({reservedType:a})=>`Cannot overwrite reserved type ${a}.`,DeclareClassElement:"The `declare` modifier can only appear on class fields.",DeclareClassFieldInitializer:"Initializers are not allowed in fields with the `declare` modifier.",DuplicateDeclareModuleExports:"Duplicate `declare module.exports` statement.",EnumBooleanMemberNotInitialized:({memberName:a,enumName:e})=>`Boolean enum members need to be initialized. Use either \`${a} = true,\` or \`${a} = false,\` in enum \`${e}\`.`,EnumDuplicateMemberName:({memberName:a,enumName:e})=>`Enum member names need to be unique, but the name \`${a}\` has already been used before in enum \`${e}\`.`,EnumInconsistentMemberValues:({enumName:a})=>`Enum \`${a}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,EnumInvalidExplicitType:({invalidEnumType:a,enumName:e})=>`Enum type \`${a}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${e}\`.`,EnumInvalidExplicitTypeUnknownSupplied:({enumName:a})=>`Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${a}\`.`,EnumInvalidMemberInitializerPrimaryType:({enumName:a,memberName:e,explicitType:t})=>`Enum \`${a}\` has type \`${t}\`, so the initializer of \`${e}\` needs to be a ${t} literal.`,EnumInvalidMemberInitializerSymbolType:({enumName:a,memberName:e})=>`Symbol enum members cannot be initialized. Use \`${e},\` in enum \`${a}\`.`,EnumInvalidMemberInitializerUnknownType:({enumName:a,memberName:e})=>`The enum member initializer for \`${e}\` needs to be a literal (either a boolean, number, or string) in enum \`${a}\`.`,EnumInvalidMemberName:({enumName:a,memberName:e,suggestion:t})=>`Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${e}\`, consider using \`${t}\`, in enum \`${a}\`.`,EnumNumberMemberNotInitialized:({enumName:a,memberName:e})=>`Number enum members need to be initialized, e.g. \`${e} = 1\` in enum \`${a}\`.`,EnumStringMemberInconsistentlyInitialized:({enumName:a})=>`String enum members need to consistently either all use initializers, or use no initializers, in enum \`${a}\`.`,GetterMayNotHaveThisParam:"A getter cannot have a `this` parameter.",ImportTypeShorthandOnlyInPureImport:"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",InexactInsideExact:"Explicit inexact syntax cannot appear inside an explicit exact object type.",InexactInsideNonObject:"Explicit inexact syntax cannot appear in class or interface definitions.",InexactVariance:"Explicit inexact syntax cannot have variance.",InvalidNonTypeImportInDeclareModule:"Imports within a `declare module` body must always be `import type` or `import typeof`.",MissingTypeParamDefault:"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",NestedDeclareModule:"`declare module` cannot be used inside another `declare module`.",NestedFlowComment:"Cannot have a flow comment inside another flow comment.",PatternIsOptional:{message:"A binding pattern parameter cannot be optional in an implementation signature."},SetterMayNotHaveThisParam:"A setter cannot have a `this` parameter.",SpreadVariance:"Spread properties cannot have variance.",ThisParamAnnotationRequired:"A type annotation is required for the `this` parameter.",ThisParamBannedInConstructor:"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",ThisParamMayNotBeOptional:"The `this` parameter cannot be optional.",ThisParamMustBeFirst:"The `this` parameter must be the first function parameter.",ThisParamNoDefault:"The `this` parameter may not have a default value.",TypeBeforeInitializer:"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",TypeCastInPattern:"The type cast expression is expected to be wrapped with parenthesis.",UnexpectedExplicitInexactInObject:"Explicit inexact syntax must appear at the end of an inexact object.",UnexpectedReservedType:({reservedType:a})=>`Unexpected reserved type ${a}.`,UnexpectedReservedUnderscore:"`_` is only allowed as a type argument to call or new.",UnexpectedSpaceBetweenModuloChecks:"Spaces between `%` and `checks` are not allowed here.",UnexpectedSpreadType:"Spread operator cannot appear in class or interface definitions.",UnexpectedSubtractionOperand:'Unexpected token, expected "number" or "bigint".',UnexpectedTokenAfterTypeParameter:"Expected an arrow function after this type parameter declaration.",UnexpectedTypeParameterBeforeAsyncArrowFunction:"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",UnsupportedDeclareExportKind:({unsupportedExportKind:a,suggestion:e})=>`\`declare export ${a}\` is not supported. Use \`${e}\` instead.`,UnsupportedStatementInDeclareModule:"Only declares and type imports are allowed inside declare module.",UnterminatedFlowComment:"Unterminated flow-comment."},x=R`flow`(Ai);function bi(a){return a.type==="DeclareExportAllDeclaration"||a.type==="DeclareExportDeclaration"&&(!a.declaration||a.declaration.type!=="TypeAlias"&&a.declaration.type!=="InterfaceDeclaration")}function qe(a){return a.importKind==="type"||a.importKind==="typeof"}var Si={const:"declare export var",let:"declare export var",type:"export type",interface:"export interface"};function Ci(a,e){let t=[],s=[];for(let i=0;i<a.length;i++)(e(a[i],i,a)?t:s).push(a[i]);return[t,s]}var Ii=/\*?\s*@((?:no)?flow)\b/,wi=a=>class extends a{flowPragma=void 0;getScopeHandler(){return zt}shouldParseTypes(){return this.getPluginOption("flow","all")||this.flowPragma==="flow"}finishToken(t,s){t!==130&&t!==9&&t!==24&&this.flowPragma===void 0&&(this.flowPragma=null),super.finishToken(t,s)}addComment(t){if(this.flowPragma===void 0){let s=Ii.exec(t.value);if(s)if(s[1]==="flow")this.flowPragma="flow";else if(s[1]==="noflow")this.flowPragma="noflow";else throw new Error("Unexpected flow pragma")}super.addComment(t)}flowParseTypeInitialiser(t){let s=this.state.inType;this.state.inType=!0,this.expect(t||10);let i=this.flowParseType();return this.state.inType=s,i}flowParsePredicate(){let t=this.startNode(),s=this.state.startLoc;return this.next(),this.expectContextual(106),this.state.lastTokStartLoc.index>s.index+1&&this.raise(x.UnexpectedSpaceBetweenModuloChecks,s),this.eat(6)?(t.value=super.parseExpression(),this.expect(7),this.finishNode(t,"DeclaredPredicate")):this.finishNode(t,"InferredPredicate")}flowParseTypeAndPredicateInitialiser(t){let s=this.state.inType;this.state.inType=!0,this.expect(10);let i=null,r=null;return t&&this.match(50)?(this.state.inType=s,r=this.flowParsePredicate()):(i=this.flowParseType(),this.state.inType=s,this.match(50)&&(r=this.flowParsePredicate())),[i,r]}flowParseDeclareClass(t){return this.next(),this.flowParseInterfaceish(t,!0),this.finishNode(t,"DeclareClass")}flowParseDeclareFunction(t){this.next();let s=t.id=this.parseIdentifier(),i=this.startNode(),r=this.startNode();this.match(43)?i.typeParameters=this.flowParseTypeParameterDeclaration():i.typeParameters=null,this.expect(6);let n=this.flowParseFunctionTypeParams();return i.params=n.params,i.rest=n.rest,i.this=n._this,this.expect(7),[i.returnType,t.predicate]=this.flowParseTypeAndPredicateInitialiser(!1),r.typeAnnotation=this.finishNode(i,"FunctionTypeAnnotation"),s.typeAnnotation=this.finishNode(r,"TypeAnnotation"),this.resetEndLocation(s),this.semicolon(),this.scope.declareName(t.id.name,2048,t.id.start),this.finishNode(t,"DeclareFunction")}flowParseDeclare(t,s){if(this.match(76))return this.flowParseDeclareClass(t);if(this.match(64))return this.flowParseDeclareFunction(t);if(this.match(70))return this.flowParseDeclareVariable(t);if(this.eatContextual(123))return this.match(12)?this.flowParseDeclareModuleExports(t):(s&&this.raise(x.NestedDeclareModule,this.state.lastTokStartLoc),this.flowParseDeclareModule(t));if(this.isContextual(126))return this.flowParseDeclareTypeAlias(t);if(this.isContextual(127))return this.flowParseDeclareOpaqueType(t);if(this.isContextual(125))return this.flowParseDeclareInterface(t);if(this.match(78))return this.flowParseDeclareExportDeclaration(t,s);throw this.unexpected()}flowParseDeclareVariable(t){return this.next(),t.id=this.flowParseTypeAnnotatableIdentifier(),this.scope.declareName(t.id.name,5,t.id.start),this.semicolon(),this.finishNode(t,"DeclareVariable")}flowParseDeclareModule(t){this.scope.enter(0),this.match(130)?t.id=super.parseExprAtom():t.id=this.parseIdentifier();let s=this.startNode(),i=s.body=[];for(this.expect(2);!this.match(4);){let o=this.startNode();this.match(79)?(this.next(),!this.isContextual(126)&&!this.match(83)&&this.raise(x.InvalidNonTypeImportInDeclareModule,this.state.lastTokStartLoc),i.push(super.parseImport(o))):(this.expectContextual(121,x.UnsupportedStatementInDeclareModule),i.push(this.flowParseDeclare(o,!0)))}this.scope.exit(),this.expect(4),t.body=this.finishNode(s,"BlockStatement");let r=null,n=!1;return i.forEach(o=>{bi(o)?(r==="CommonJS"&&this.raise(x.AmbiguousDeclareModuleKind,o),r="ES"):o.type==="DeclareModuleExports"&&(n&&this.raise(x.DuplicateDeclareModuleExports,o),r==="ES"&&this.raise(x.AmbiguousDeclareModuleKind,o),r="CommonJS",n=!0)}),t.kind=r||"CommonJS",this.finishNode(t,"DeclareModule")}flowParseDeclareExportDeclaration(t,s){if(this.expect(78),this.eat(61))return this.match(64)||this.match(76)?t.declaration=this.flowParseDeclare(this.startNode()):(t.declaration=this.flowParseType(),this.semicolon()),t.default=!0,this.finishNode(t,"DeclareExportDeclaration");if(this.match(71)||this.isLet()||(this.isContextual(126)||this.isContextual(125))&&!s){let i=this.state.value;throw this.raise(x.UnsupportedDeclareExportKind,this.state.startLoc,{unsupportedExportKind:i,suggestion:Si[i]})}if(this.match(70)||this.match(64)||this.match(76)||this.isContextual(127))return t.declaration=this.flowParseDeclare(this.startNode()),t.default=!1,this.finishNode(t,"DeclareExportDeclaration");if(this.match(51)||this.match(2)||this.isContextual(125)||this.isContextual(126)||this.isContextual(127)){let i=this.parseExport(t,null);return i.type==="ExportNamedDeclaration"?(i.default=!1,delete i.exportKind,this.castNodeTo(i,"DeclareExportDeclaration")):this.castNodeTo(i,"DeclareExportAllDeclaration")}throw this.unexpected()}flowParseDeclareModuleExports(t){return this.next(),this.expectContextual(107),t.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(t,"DeclareModuleExports")}flowParseDeclareTypeAlias(t){this.next();let s=this.flowParseTypeAlias(t);return this.castNodeTo(s,"DeclareTypeAlias"),s}flowParseDeclareOpaqueType(t){return this.next(),this.flowParseOpaqueType(t,!0)}flowParseDeclareInterface(t){return this.next(),this.flowParseInterfaceish(t,!1),this.finishNode(t,"DeclareInterface")}flowParseInterfaceish(t,s){if(t.id=this.flowParseRestrictedIdentifier(!s,!0),this.scope.declareName(t.id.name,s?17:8201,t.id.start),this.match(43)?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.extends=[],this.eat(77))do t.extends.push(this.flowParseInterfaceExtends());while(!s&&this.eat(8));if(s){let i=[],r=[];if(this.eatContextual(113))do r.push(this.flowParseInterfaceExtends());while(this.eat(8));if(this.eatContextual(109))do i.push(this.flowParseClassImplements());while(this.eat(8));t.implements=i,t.mixins=r}t.body=this.flowParseObjectType({allowStatic:s,allowExact:!1,allowSpread:!1,allowProto:s,allowInexact:!1})}flowParseInterfaceExtends(){let t=this.startNode();return t.id=this.flowParseQualifiedTypeIdentifier(),this.match(43)?t.typeParameters=this.flowParseTypeParameterInstantiation():t.typeParameters=null,this.finishNode(t,"InterfaceExtends")}flowParseInterface(t){return this.flowParseInterfaceish(t,!1),this.finishNode(t,"InterfaceDeclaration")}checkNotUnderscore(t){t==="_"&&this.raise(x.UnexpectedReservedUnderscore,this.state.startLoc)}checkReservedType(t,s,i){Ti.has(t)&&this.raise(i?x.AssignReservedType:x.UnexpectedReservedType,s,{reservedType:t})}flowParseRestrictedIdentifierName(t,s){return this.checkReservedType(this.state.value,this.state.startLoc,s),this.parseIdentifierName(t)}flowParseRestrictedIdentifier(t,s){let i=this.startNode(),r=this.flowParseRestrictedIdentifierName(t,s);return this.createIdentifier(i,r)}flowParseTypeAlias(t){return t.id=this.flowParseRestrictedIdentifier(!1,!0),this.scope.declareName(t.id.name,8201,t.id.start),this.match(43)?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.right=this.flowParseTypeInitialiser(25),this.semicolon(),this.finishNode(t,"TypeAlias")}flowParseOpaqueType(t,s){return this.expectContextual(126),t.id=this.flowParseRestrictedIdentifier(!0,!0),this.scope.declareName(t.id.name,8201,t.id.start),this.match(43)?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.supertype=null,this.match(10)&&(t.supertype=this.flowParseTypeInitialiser(10)),t.impltype=null,s||(t.impltype=this.flowParseTypeInitialiser(25)),this.semicolon(),this.finishNode(t,s?"DeclareOpaqueType":"OpaqueType")}flowParseTypeParameterBound(){if(this.match(10)||this.isContextual(77)){let t=this.startNode();return this.next(),t.typeAnnotation=this.flowParseType(),this.finishNode(t,"TypeAnnotation")}}flowParseTypeParameter(t=!1){let s=this.state.startLoc,i=this.startNode(),r=this.flowParseVariance();return i.name=this.flowParseRestrictedIdentifierName(),i.variance=r,i.bound=this.flowParseTypeParameterBound(),this.match(25)?(this.eat(25),i.default=this.flowParseType()):t&&this.raise(x.MissingTypeParamDefault,s),this.finishNode(i,"TypeParameter")}flowParseTypeParameterDeclaration(){let t=this.state.inType,s=this.startNode();s.params=[],this.state.inType=!0,this.match(43)||this.match(138)?this.next():this.unexpected();let i=!1;do{let r=this.flowParseTypeParameter(i);s.params.push(r),r.default&&(i=!0),this.match(44)||this.expect(8)}while(!this.match(44));return this.expect(44),this.state.inType=t,this.finishNode(s,"TypeParameterDeclaration")}flowInTopLevelContext(t){if(this.curContext()!==E.brace){let s=this.state.context;this.state.context=[s[0]];try{return t()}finally{this.state.context=s}}else return t()}flowParseTypeParameterInstantiationInExpression(){if(this.reScan_lt()===43)return this.flowParseTypeParameterInstantiation()}flowParseTypeParameterInstantiation(){let t=this.startNode(),s=this.state.inType;return this.state.inType=!0,t.params=[],this.flowInTopLevelContext(()=>{this.expect(43);let i=this.state.noAnonFunctionType;for(this.state.noAnonFunctionType=!1;!this.match(44);)t.params.push(this.flowParseType()),this.match(44)||this.expect(8);this.state.noAnonFunctionType=i}),this.state.inType=s,!this.state.inType&&this.curContext()===E.brace&&this.reScan_lt_gt(),this.expect(44),this.finishNode(t,"TypeParameterInstantiation")}flowParseTypeParameterInstantiationCallOrNew(){if(this.reScan_lt()!==43)return null;let t=this.startNode(),s=this.state.inType;for(t.params=[],this.state.inType=!0,this.expect(43);!this.match(44);)t.params.push(this.flowParseTypeOrImplicitInstantiation()),this.match(44)||this.expect(8);return this.expect(44),this.state.inType=s,this.finishNode(t,"TypeParameterInstantiation")}flowParseInterfaceType(){let t=this.startNode();if(this.expectContextual(125),t.extends=[],this.eat(77))do t.extends.push(this.flowParseInterfaceExtends());while(this.eat(8));return t.body=this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!1,allowProto:!1,allowInexact:!1}),this.finishNode(t,"InterfaceTypeAnnotation")}flowParseObjectPropertyKey(){return this.match(131)||this.match(130)?super.parseExprAtom():this.parseIdentifier(!0)}flowParseObjectTypeIndexer(t,s,i){return t.static=s,this.lookahead().type===10?(t.id=this.parseIdentifier(!0),t.key=this.flowParseTypeInitialiser()):(t.id=null,t.key=this.flowParseType()),this.expect(1),t.value=this.flowParseTypeInitialiser(),t.variance=i,this.finishNode(t,"ObjectTypeIndexer")}flowParseObjectTypeInternalSlot(t,s){return t.static=s,t.id=this.parseIdentifier(!0),this.expect(1),this.expect(1),this.match(43)||this.match(6)?(t.method=!0,t.optional=!1,t.value=this.flowParseObjectTypeMethodish(this.startNodeAtNode(t))):(t.method=!1,this.eat(13)&&(t.optional=!0),t.value=this.flowParseTypeInitialiser()),this.finishNode(t,"ObjectTypeInternalSlot")}flowParseObjectTypeMethodish(t){for(t.params=[],t.rest=null,t.typeParameters=null,t.this=null,this.match(43)&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(6),this.match(74)&&(t.this=this.flowParseFunctionTypeParam(!0),t.this.name=null,this.match(7)||this.expect(8));!this.match(7)&&!this.match(17);)t.params.push(this.flowParseFunctionTypeParam(!1)),this.match(7)||this.expect(8);return this.eat(17)&&(t.rest=this.flowParseFunctionTypeParam(!1)),this.expect(7),t.returnType=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeAnnotation")}flowParseObjectTypeCallProperty(t,s){let i=this.startNode();return t.static=s,t.value=this.flowParseObjectTypeMethodish(i),this.finishNode(t,"ObjectTypeCallProperty")}flowParseObjectType({allowStatic:t,allowExact:s,allowSpread:i,allowProto:r,allowInexact:n}){let o=this.state.inType;this.state.inType=!0;let h=this.startNode();h.callProperties=[],h.properties=[],h.indexers=[],h.internalSlots=[];let l,p,u=!1;for(s&&this.match(3)?(this.expect(3),l=5,p=!0):(this.expect(2),l=4,p=!1),h.exact=p;!this.match(l);){let m=!1,P=null,N=null,k=this.startNode();if(r&&this.isContextual(114)){let w=this.lookahead();w.type!==10&&w.type!==13&&(this.next(),P=this.state.startLoc,t=!1)}if(t&&this.isContextual(102)){let w=this.lookahead();w.type!==10&&w.type!==13&&(this.next(),m=!0)}let I=this.flowParseVariance();if(this.eat(0))P!=null&&this.unexpected(P),this.eat(0)?(I&&this.unexpected(I.start),h.internalSlots.push(this.flowParseObjectTypeInternalSlot(k,m))):h.indexers.push(this.flowParseObjectTypeIndexer(k,m,I));else if(this.match(6)||this.match(43))P!=null&&this.unexpected(P),I&&this.unexpected(I.start),h.callProperties.push(this.flowParseObjectTypeCallProperty(k,m));else{let w="init";if(this.isContextual(95)||this.isContextual(100)){let q=this.lookahead();ts(q.type)&&(w=this.state.value,this.next())}let $=this.flowParseObjectTypeProperty(k,m,P,I,w,i,n??!p);$===null?(u=!0,N=this.state.lastTokStartLoc):h.properties.push($)}this.flowObjectTypeSemicolon(),N&&!this.match(4)&&!this.match(5)&&this.raise(x.UnexpectedExplicitInexactInObject,N)}this.expect(l),i&&(h.inexact=u);let f=this.finishNode(h,"ObjectTypeAnnotation");return this.state.inType=o,f}flowParseObjectTypeProperty(t,s,i,r,n,o,h){if(this.eat(17))return this.match(8)||this.match(9)||this.match(4)||this.match(5)?(o?h||this.raise(x.InexactInsideExact,this.state.lastTokStartLoc):this.raise(x.InexactInsideNonObject,this.state.lastTokStartLoc),r&&this.raise(x.InexactVariance,r),null):(o||this.raise(x.UnexpectedSpreadType,this.state.lastTokStartLoc),i!=null&&this.unexpected(i),r&&this.raise(x.SpreadVariance,r),t.argument=this.flowParseType(),this.finishNode(t,"ObjectTypeSpreadProperty"));{t.key=this.flowParseObjectPropertyKey(),t.static=s,t.proto=i!=null,t.kind=n;let l=!1;return this.match(43)||this.match(6)?(t.method=!0,i!=null&&this.unexpected(i),r&&this.unexpected(r.start),t.value=this.flowParseObjectTypeMethodish(this.startNodeAtNode(t)),n==="get"||n==="set"?this.flowCheckGetterSetterParams(t):!s&&!o&&t.key.name==="constructor"&&t.value.this&&this.raise(x.ThisParamBannedInConstructor,t.value.this)):(n!=="init"&&this.unexpected(),t.method=!1,this.eat(13)&&(l=!0),t.value=this.flowParseTypeInitialiser(),t.variance=r),t.optional=l,this.finishNode(t,"ObjectTypeProperty")}}flowCheckGetterSetterParams(t){let s=t.kind==="get"?0:1,i=t.value,r=i.params.length+(i.rest?1:0);i.this&&this.raise(t.kind==="get"?x.GetterMayNotHaveThisParam:x.SetterMayNotHaveThisParam,i.this),r!==s&&this.raise(t.kind==="get"?c.BadGetterArity:c.BadSetterArity,t),t.kind==="set"&&i.rest&&this.raise(c.BadSetterRestParameter,t)}flowObjectTypeSemicolon(){!this.eat(9)&&!this.eat(8)&&!this.match(4)&&!this.match(5)&&this.unexpected()}flowParseQualifiedTypeIdentifier(t,s){t??=this.state.startLoc;let i=s||this.flowParseRestrictedIdentifier(!0);for(;this.eat(12);){let r=this.startNodeAt(t);r.qualification=i,r.id=this.flowParseRestrictedIdentifier(!0),i=this.finishNode(r,"QualifiedTypeIdentifier")}return i}flowParseGenericType(t,s){let i=this.startNodeAt(t);return i.typeParameters=null,i.id=this.flowParseQualifiedTypeIdentifier(t,s),this.match(43)&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")}flowParseTypeofType(){let t=this.startNode();return this.expect(83),t.argument=this.flowParsePrimaryType(),this.finishNode(t,"TypeofTypeAnnotation")}flowParseTupleType(){let t=this.startNode();for(t.types=[],this.expect(0);this.state.pos<this.length&&!this.match(1)&&(t.types.push(this.flowParseType()),!this.match(1));)this.expect(8);return this.expect(1),this.finishNode(t,"TupleTypeAnnotation")}flowParseFunctionTypeParam(t){let s=null,i=!1,r,n=this.startNode(),o=this.lookahead(),h=this.state.type===74;return o.type===10||o.type===13?(h&&!t&&this.raise(x.ThisParamMustBeFirst,n),s=this.parseIdentifier(h),this.eat(13)&&(i=!0,h&&this.raise(x.ThisParamMayNotBeOptional,n)),r=this.flowParseTypeInitialiser()):r=this.flowParseType(),n.name=s,n.optional=i,n.typeAnnotation=r,this.finishNode(n,"FunctionTypeParam")}reinterpretTypeAsFunctionTypeParam(t){let s=this.startNodeAtNode(t);return s.name=null,s.optional=!1,s.typeAnnotation=t,this.finishNode(s,"FunctionTypeParam")}flowParseFunctionTypeParams(t=[]){let s=null,i=null;for(this.match(74)&&(i=this.flowParseFunctionTypeParam(!0),i.name=null,this.match(7)||this.expect(8));!this.match(7)&&!this.match(17);)t.push(this.flowParseFunctionTypeParam(!1)),this.match(7)||this.expect(8);return this.eat(17)&&(s=this.flowParseFunctionTypeParam(!1)),{params:t,rest:s,_this:i}}flowIdentToTypeAnnotation(t,s,i){switch(i.name){case"any":return this.finishNode(s,"AnyTypeAnnotation");case"bool":case"boolean":return this.finishNode(s,"BooleanTypeAnnotation");case"mixed":return this.finishNode(s,"MixedTypeAnnotation");case"empty":return this.finishNode(s,"EmptyTypeAnnotation");case"number":return this.finishNode(s,"NumberTypeAnnotation");case"string":return this.finishNode(s,"StringTypeAnnotation");case"symbol":return this.finishNode(s,"SymbolTypeAnnotation");default:return this.checkNotUnderscore(i.name),this.flowParseGenericType(t,i)}}flowParsePrimaryType(){let t=this.state.startLoc,s=this.startNode(),i,r,n=!1,o=this.state.noAnonFunctionType;switch(this.state.type){case 2:return this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!0,allowProto:!1,allowInexact:!0});case 3:return this.flowParseObjectType({allowStatic:!1,allowExact:!0,allowSpread:!0,allowProto:!1,allowInexact:!1});case 0:return this.state.noAnonFunctionType=!1,r=this.flowParseTupleType(),this.state.noAnonFunctionType=o,r;case 43:{let h=this.startNode();return h.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(6),i=this.flowParseFunctionTypeParams(),h.params=i.params,h.rest=i.rest,h.this=i._this,this.expect(7),this.expect(15),h.returnType=this.flowParseType(),this.finishNode(h,"FunctionTypeAnnotation")}case 6:{let h=this.startNode();if(this.next(),!this.match(7)&&!this.match(17))if(C(this.state.type)||this.match(74)){let l=this.lookahead().type;n=l!==13&&l!==10}else n=!0;if(n){if(this.state.noAnonFunctionType=!1,r=this.flowParseType(),this.state.noAnonFunctionType=o,this.state.noAnonFunctionType||!(this.match(8)||this.match(7)&&this.lookahead().type===15))return this.expect(7),r;this.eat(8)}return r?i=this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(r)]):i=this.flowParseFunctionTypeParams(),h.params=i.params,h.rest=i.rest,h.this=i._this,this.expect(7),this.expect(15),h.returnType=this.flowParseType(),h.typeParameters=null,this.finishNode(h,"FunctionTypeAnnotation")}case 130:return this.parseLiteral(this.state.value,"StringLiteralTypeAnnotation");case 81:case 82:return s.value=this.match(81),this.next(),this.finishNode(s,"BooleanLiteralTypeAnnotation");case 49:if(this.state.value==="-"){if(this.next(),this.match(131))return this.parseLiteralAtNode(-this.state.value,"NumberLiteralTypeAnnotation",s);if(this.match(132))return this.parseLiteralAtNode(-this.state.value,"BigIntLiteralTypeAnnotation",s);throw this.raise(x.UnexpectedSubtractionOperand,this.state.startLoc)}throw this.unexpected();case 131:return this.parseLiteral(this.state.value,"NumberLiteralTypeAnnotation");case 132:return this.parseLiteral(this.state.value,"BigIntLiteralTypeAnnotation");case 84:return this.next(),this.finishNode(s,"VoidTypeAnnotation");case 80:return this.next(),this.finishNode(s,"NullLiteralTypeAnnotation");case 74:return this.next(),this.finishNode(s,"ThisTypeAnnotation");case 51:return this.next(),this.finishNode(s,"ExistsTypeAnnotation");case 83:return this.flowParseTypeofType();default:if(xe(this.state.type)){let h=W(this.state.type);return this.next(),super.createIdentifier(s,h)}else if(C(this.state.type))return this.isContextual(125)?this.flowParseInterfaceType():this.flowIdentToTypeAnnotation(t,s,this.parseIdentifier())}throw this.unexpected()}flowParsePostfixType(){let t=this.state.startLoc,s=this.flowParsePrimaryType(),i=!1;for(;(this.match(0)||this.match(14))&&!this.canInsertSemicolon();){let r=this.startNodeAt(t),n=this.eat(14);i=i||n,this.expect(0),!n&&this.match(1)?(r.elementType=s,this.next(),s=this.finishNode(r,"ArrayTypeAnnotation")):(r.objectType=s,r.indexType=this.flowParseType(),this.expect(1),i?(r.optional=n,s=this.finishNode(r,"OptionalIndexedAccessType")):s=this.finishNode(r,"IndexedAccessType"))}return s}flowParsePrefixType(){let t=this.startNode();return this.eat(13)?(t.typeAnnotation=this.flowParsePrefixType(),this.finishNode(t,"NullableTypeAnnotation")):this.flowParsePostfixType()}flowParseAnonFunctionWithoutParens(){let t=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(15)){let s=this.startNodeAtNode(t);return s.params=[this.reinterpretTypeAsFunctionTypeParam(t)],s.rest=null,s.this=null,s.returnType=this.flowParseType(),s.typeParameters=null,this.finishNode(s,"FunctionTypeAnnotation")}return t}flowParseIntersectionType(){let t=this.startNode();this.eat(41);let s=this.flowParseAnonFunctionWithoutParens();for(t.types=[s];this.eat(41);)t.types.push(this.flowParseAnonFunctionWithoutParens());return t.types.length===1?s:this.finishNode(t,"IntersectionTypeAnnotation")}flowParseUnionType(){let t=this.startNode();this.eat(39);let s=this.flowParseIntersectionType();for(t.types=[s];this.eat(39);)t.types.push(this.flowParseIntersectionType());return t.types.length===1?s:this.finishNode(t,"UnionTypeAnnotation")}flowParseType(){let t=this.state.inType;this.state.inType=!0;let s=this.flowParseUnionType();return this.state.inType=t,s}flowParseTypeOrImplicitInstantiation(){if(this.state.type===128&&this.state.value==="_"){let t=this.state.startLoc,s=this.parseIdentifier();return this.flowParseGenericType(t,s)}else return this.flowParseType()}flowParseTypeAnnotation(){let t=this.startNode();return t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"TypeAnnotation")}flowParseTypeAnnotatableIdentifier(){let t=this.startNode(),s=this.parseIdentifierName();return this.match(10)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),this.createIdentifier(t,s)}typeCastToParameter(t){return t.expression.typeAnnotation=t.typeAnnotation,this.resetEndLocationFromNode(t.expression,t.typeAnnotation),t.expression}flowParseVariance(){let t=null;return this.match(49)?(t=this.startNode(),this.state.value==="+"?t.kind="plus":t.kind="minus",this.next(),this.finishNode(t,"Variance")):t}parseFunctionBody(t,s,i=!1){if(s){this.forwardNoArrowParamsConversionAt(t,()=>super.parseFunctionBody(t,!0,i));return}super.parseFunctionBody(t,!1,i)}parseFunctionBodyAndFinish(t,s,i=!1){if(this.match(10)){let r=this.startNode();s==="FunctionDeclaration"||s==="FunctionExpression"||s==="ArrowFunctionExpression"?[r.typeAnnotation,t.predicate]=this.flowParseTypeAndPredicateInitialiser(!0):r.typeAnnotation=this.flowParseTypeInitialiser(),t.returnType=r.typeAnnotation?this.finishNode(r,"TypeAnnotation"):null}return super.parseFunctionBodyAndFinish(t,s,i)}parseStatementLike(t){if(this.state.strict&&this.isContextual(125)){let i=this.lookahead();if(U(i.type)){let r=this.startNode();return this.next(),this.flowParseInterface(r)}}else if(this.isContextual(122)){let i=this.startNode();return this.next(),this.flowParseEnumDeclaration(i)}let s=super.parseStatementLike(t);return this.flowPragma===void 0&&!this.isValidDirective(s)&&(this.flowPragma=null),s}parseExpressionStatement(t,s,i){if(s.type==="Identifier"){if(s.name==="declare"){if(this.match(76)||C(this.state.type)||this.match(64)||this.match(70)||this.match(78))return this.flowParseDeclare(t)}else if(C(this.state.type)){if(s.name==="interface")return this.flowParseInterface(t);if(s.name==="type")return this.flowParseTypeAlias(t);if(s.name==="opaque")return this.flowParseOpaqueType(t,!1)}}return super.parseExpressionStatement(t,s,i)}shouldParseExportDeclaration(){let{type:t}=this.state;return t===122||je(t)?!this.state.containsEsc:super.shouldParseExportDeclaration()}isExportDefaultSpecifier(){let{type:t}=this.state;return t===122||je(t)?this.state.containsEsc:super.isExportDefaultSpecifier()}parseExportDefaultExpression(){if(this.isContextual(122)){let t=this.startNode();return this.next(),this.flowParseEnumDeclaration(t)}return super.parseExportDefaultExpression()}parseConditional(t,s,i){if(!this.match(13))return t;if(i!=null){let m=this.lookaheadCharCode();if(m===44||m===61||m===58||m===41)return this.setOptionalParametersError(i),t}this.expect(13);let r=this.state.clone(),n=this.state.noArrowAt,o=this.startNodeAt(s),{consequent:h,failed:l}=this.tryParseConditionalConsequent(),p=this.getArrowLikeExpressions(h),u=p[0],f=p[1];if(l||f.length>0){let m=[...n];if(f.length>0){this.state=r,this.state.noArrowAt=m;for(let P=0;P<f.length;P++)m.push(f[P].start);({consequent:h,failed:l}=this.tryParseConditionalConsequent()),[u]=this.getArrowLikeExpressions(h)}l&&u.length>1&&this.raise(x.AmbiguousConditionalArrow,r.startLoc),l&&u.length===1&&(this.state=r,m.push(u[0].start),this.state.noArrowAt=m,{consequent:h}=this.tryParseConditionalConsequent())}return this.getArrowLikeExpressions(h,!0),this.state.noArrowAt=n,this.expect(10),o.test=t,o.consequent=h,o.alternate=this.forwardNoArrowParamsConversionAt(o,()=>this.parseMaybeAssign(void 0,void 0)),this.finishNode(o,"ConditionalExpression")}tryParseConditionalConsequent(){this.state.noArrowParamsConversionAt.push(this.state.start);let t=this.parseMaybeAssignAllowIn(),s=!this.match(10);return this.state.noArrowParamsConversionAt.pop(),{consequent:t,failed:s}}getArrowLikeExpressions(t,s){let i=[t],r=[];for(;i.length!==0;){let n=i.pop();n.type==="ArrowFunctionExpression"&&n.body.type!=="BlockStatement"?(n.typeParameters||!n.returnType?this.finishArrowValidation(n):r.push(n),i.push(n.body)):n.type==="ConditionalExpression"&&(i.push(n.consequent),i.push(n.alternate))}return s?(r.forEach(n=>this.finishArrowValidation(n)),[r,[]]):Ci(r,n=>n.params.every(o=>this.isAssignable(o,!0)))}finishArrowValidation(t){this.toAssignableList(t.params,t.extra?.trailingCommaLoc,!1),this.scope.enter(518),super.checkParams(t,!1,!0),this.scope.exit()}forwardNoArrowParamsConversionAt(t,s){let i;return this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(t.start))?(this.state.noArrowParamsConversionAt.push(this.state.start),i=s(),this.state.noArrowParamsConversionAt.pop()):i=s(),i}parseParenItem(t,s){let i=super.parseParenItem(t,s);if(this.eat(13)&&(i.optional=!0,this.resetEndLocation(t)),this.match(10)){let r=this.startNodeAt(s);return r.expression=i,r.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(r,"TypeCastExpression")}return i}assertModuleNodeAllowed(t){t.type==="ImportDeclaration"&&(t.importKind==="type"||t.importKind==="typeof")||t.type==="ExportNamedDeclaration"&&t.exportKind==="type"||t.type==="ExportAllDeclaration"&&t.exportKind==="type"||super.assertModuleNodeAllowed(t)}parseExportDeclaration(t){if(this.isContextual(126)){t.exportKind="type";let s=this.startNode();return this.next(),this.match(2)?(t.specifiers=this.parseExportSpecifiers(!0),super.parseExportFrom(t),null):this.flowParseTypeAlias(s)}else if(this.isContextual(127)){t.exportKind="type";let s=this.startNode();return this.next(),this.flowParseOpaqueType(s,!1)}else if(this.isContextual(125)){t.exportKind="type";let s=this.startNode();return this.next(),this.flowParseInterface(s)}else if(this.isContextual(122)){t.exportKind="value";let s=this.startNode();return this.next(),this.flowParseEnumDeclaration(s)}else return super.parseExportDeclaration(t)}eatExportStar(t){return super.eatExportStar(t)?!0:this.isContextual(126)&&this.lookahead().type===51?(t.exportKind="type",this.next(),this.next(),!0):!1}maybeParseExportNamespaceSpecifier(t){let{startLoc:s}=this.state,i=super.maybeParseExportNamespaceSpecifier(t);return i&&t.exportKind==="type"&&this.unexpected(s),i}parseClassId(t,s,i){if((!s||i)&&this.isContextual(109)){t.id=null;return}super.parseClassId(t,s,i),this.match(43)&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}parseClassMember(t,s,i){let{startLoc:r}=this.state;if(this.isContextual(121)){if(super.parseClassMemberFromModifier(t,s))return;s.declare=!0}super.parseClassMember(t,s,i),s.declare&&(s.type!=="ClassProperty"&&s.type!=="ClassPrivateProperty"&&s.type!=="PropertyDefinition"?this.raise(x.DeclareClassElement,r):s.value&&this.raise(x.DeclareClassFieldInitializer,s.value))}isIterator(t){return t==="iterator"||t==="asyncIterator"}readIterator(){let t=super.readWord1(),s="@@"+t;(!this.isIterator(t)||!this.state.inType)&&this.raise(c.InvalidIdentifier,this.state.curPosition(),{identifierName:s}),this.finishToken(128,s)}getTokenFromCode(t){let s=this.input.charCodeAt(this.state.pos+1);t===123&&s===124?this.finishOp(3,2):this.state.inType&&(t===62||t===60)?this.finishOp(t===62?44:43,1):this.state.inType&&t===63?s===46?this.finishOp(14,2):this.finishOp(13,1):xi(t,s,this.input.charCodeAt(this.state.pos+2))?(this.state.pos+=2,this.readIterator()):super.getTokenFromCode(t)}isAssignable(t,s){return t.type==="TypeCastExpression"?this.isAssignable(t.expression,s):super.isAssignable(t,s)}toAssignable(t,s=!1){!s&&t.type==="AssignmentExpression"&&t.left.type==="TypeCastExpression"&&(t.left=this.typeCastToParameter(t.left)),super.toAssignable(t,s)}toAssignableListItem(t,s,i){let r=t[s];r.type==="TypeCastExpression"&&(t[s]=this.typeCastToParameter(r)),super.toAssignableListItem(t,s,i)}toReferencedList(t,s){for(let i=0;i<t.length;i++){let r=t[i];r?.type==="TypeCastExpression"&&!r.extra?.parenthesized&&(t.length>1||!s)&&this.raise(x.TypeCastInPattern,r.typeAnnotation)}return t}parseArrayLike(t,s){let i=super.parseArrayLike(t,s);return i.type==="ArrayExpression"&&this.toReferencedList(i.elements),i}isValidLVal(t,s,i,r){return t==="TypeCastExpression"||super.isValidLVal(t,s,i,r)}parseClassProperty(t){return this.match(10)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassProperty(t)}parseClassPrivateProperty(t){return this.match(10)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),super.parseClassPrivateProperty(t)}isClassMethod(){return this.match(43)||super.isClassMethod()}isClassProperty(){return this.match(10)||super.isClassProperty()}isNonstaticConstructor(t){return!this.match(10)&&super.isNonstaticConstructor(t)}pushClassMethod(t,s,i,r,n,o){if(s.variance&&this.unexpected(s.variance.start),delete s.variance,this.match(43)&&(s.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassMethod(t,s,i,r,n,o),s.params&&n){let h=s.params;h.length>0&&this.isThisParam(h[0])&&this.raise(x.ThisParamBannedInConstructor,s)}else if(s.type==="MethodDefinition"&&n&&s.value.params){let h=s.value.params;h.length>0&&this.isThisParam(h[0])&&this.raise(x.ThisParamBannedInConstructor,s)}}pushClassPrivateMethod(t,s,i,r){s.variance&&this.unexpected(s.variance.start),delete s.variance,this.match(43)&&(s.typeParameters=this.flowParseTypeParameterDeclaration()),super.pushClassPrivateMethod(t,s,i,r)}flowParseClassImplements(){let t=this.startNode();return t.id=this.flowParseRestrictedIdentifier(!0),this.match(43)?t.typeParameters=this.flowParseTypeParameterInstantiation():t.typeParameters=null,this.finishNode(t,"ClassImplements")}parseClassSuper(t){if(super.parseClassSuper(t),t.superClass&&(this.match(43)||this.match(47))&&(t.superTypeArguments=this.flowParseTypeParameterInstantiationInExpression()),this.eatContextual(109)){let s=t.implements=[];do s.push(this.flowParseClassImplements());while(this.eat(8))}}checkGetterSetterParams(t){super.checkGetterSetterParams(t);let s=this.getObjectOrClassMethodParams(t);if(s.length>0){let i=s[0];this.isThisParam(i)&&t.kind==="get"?this.raise(x.GetterMayNotHaveThisParam,i):this.isThisParam(i)&&this.raise(x.SetterMayNotHaveThisParam,i)}}parsePropertyNamePrefixOperator(t){t.variance=this.flowParseVariance()}parseObjPropValue(t,s,i,r,n,o,h){t.variance&&this.unexpected(t.variance.start),delete t.variance;let l;this.match(43)&&!o&&(l=this.flowParseTypeParameterDeclaration(),this.match(6)||this.unexpected());let p=super.parseObjPropValue(t,s,i,r,n,o,h);return l&&((p.value||p).typeParameters=l),p}parseFunctionParamType(t){return this.eat(13)&&(t.type!=="Identifier"&&this.raise(x.PatternIsOptional,t),this.isThisParam(t)&&this.raise(x.ThisParamMayNotBeOptional,t),t.optional=!0),this.match(10)?t.typeAnnotation=this.flowParseTypeAnnotation():this.isThisParam(t)&&this.raise(x.ThisParamAnnotationRequired,t),this.match(25)&&this.isThisParam(t)&&this.raise(x.ThisParamNoDefault,t),this.resetEndLocation(t),t}parseMaybeDefault(t,s){let i=super.parseMaybeDefault(t,s);return i.type==="AssignmentPattern"&&i.typeAnnotation&&i.right.start<i.typeAnnotation.start&&this.raise(x.TypeBeforeInitializer,i.typeAnnotation),i}parseImportSpecifierLocal(t,s,i){s.local=qe(t)?this.flowParseRestrictedIdentifier(!0,!0):this.parseIdentifier(),t.specifiers.push(this.finishImportSpecifier(s,i))}isPotentialImportPhase(t){if(super.isPotentialImportPhase(t))return!0;if(this.isContextual(126)){if(!t)return!0;let s=this.lookaheadCharCode();return s===123||s===42}return!t&&this.isContextual(83)}applyImportPhase(t,s,i,r){if(super.applyImportPhase(t,s,i,r),s){if(!i&&this.match(61))return;t.exportKind=i==="type"?i:"value"}else i==="type"&&this.match(51)&&this.unexpected(),t.importKind=i==="type"||i==="typeof"?i:"value"}parseImportSpecifier(t,s,i,r,n){let o=t.imported,h=null;o.type==="Identifier"&&(o.name==="type"?h="type":o.name==="typeof"&&(h="typeof"));let l=!1;if(this.isContextual(89)&&!this.isLookaheadContextual("as")){let u=this.parseIdentifier(!0);h!==null&&!U(this.state.type)?(t.imported=u,t.importKind=h,t.local=this.cloneIdentifier(u)):(t.imported=o,t.importKind=null,t.local=this.parseIdentifier())}else{if(h!==null&&U(this.state.type))t.imported=this.parseIdentifier(!0),t.importKind=h;else{if(s)throw this.raise(c.ImportBindingIsString,t,{importName:o.value});t.imported=o,t.importKind=null}this.eatContextual(89)?t.local=this.parseIdentifier():(l=!0,t.local=this.cloneIdentifier(t.imported))}let p=qe(t);return i&&p&&this.raise(x.ImportTypeShorthandOnlyInPureImport,t),(i||p)&&this.checkReservedType(t.local.name,t.local.start,!0),l&&!i&&!p&&this.checkReservedWord(t.local.name,t.start,!0,!0),this.finishImportSpecifier(t,"ImportSpecifier")}parseBindingAtom(){switch(this.state.type){case 74:return this.parseIdentifier(!0);default:return super.parseBindingAtom()}}parseFunctionParams(t,s){let i=t.kind;i!=="get"&&i!=="set"&&this.match(43)&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),super.parseFunctionParams(t,s)}parseVarId(t,s){super.parseVarId(t,s),this.match(10)&&(t.id.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(t.id))}parseAsyncArrowFromCallExpression(t,s){if(this.match(10)){let i=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0,t.returnType=this.flowParseTypeAnnotation(),this.state.noAnonFunctionType=i}return super.parseAsyncArrowFromCallExpression(t,s)}shouldParseAsyncArrow(){return this.match(10)||super.shouldParseAsyncArrow()}parseMaybeAssign(t,s){let i=null,r;if(this.hasPlugin("jsx")&&(this.match(138)||this.match(43))){if(i=this.state.clone(),r=this.tryParse(()=>super.parseMaybeAssign(t,s),i),!r.error)return r.node;let{context:n}=this.state,o=n[n.length-1];(o===E.j_oTag||o===E.j_expr)&&n.pop()}if(r?.error||this.match(43)){i=i||this.state.clone();let n,o=this.tryParse(l=>{n=this.flowParseTypeParameterDeclaration();let p=this.forwardNoArrowParamsConversionAt(n,()=>{let f=super.parseMaybeAssign(t,s);return this.resetStartLocationFromNode(f,n),f});p.extra?.parenthesized&&l();let u=this.maybeUnwrapTypeCastExpression(p);return u.type!=="ArrowFunctionExpression"&&l(),u.typeParameters=n,this.resetStartLocationFromNode(u,n),p},i),h=null;if(o.node&&this.maybeUnwrapTypeCastExpression(o.node).type==="ArrowFunctionExpression"){if(!o.error&&!o.aborted)return o.node.async&&this.raise(x.UnexpectedTypeParameterBeforeAsyncArrowFunction,n),o.node;h=o.node}if(r?.node)return this.state=r.failState,r.node;if(h)return this.state=o.failState,h;throw r?.thrown?r.error:o.thrown?o.error:this.raise(x.UnexpectedTokenAfterTypeParameter,n)}return super.parseMaybeAssign(t,s)}parseArrow(t){if(this.match(10)){let s=this.tryParse(()=>{let i=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0;let r=this.startNode();return[r.typeAnnotation,t.predicate]=this.flowParseTypeAndPredicateInitialiser(!0),this.state.noAnonFunctionType=i,this.canInsertSemicolon()&&this.unexpected(),this.match(15)||this.unexpected(),r});if(s.thrown)return null;s.error&&(this.state=s.failState),t.returnType=s.node.typeAnnotation?this.finishNode(s.node,"TypeAnnotation"):null}return super.parseArrow(t)}shouldParseArrow(t){return this.match(10)||super.shouldParseArrow(t)}setArrowFunctionParameters(t,s){this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(t.start))?t.params=s:super.setArrowFunctionParameters(t,s)}checkParams(t,s,i,r=!0){if(!(i&&this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(t.start)))){for(let n=0;n<t.params.length;n++)this.isThisParam(t.params[n])&&n>0&&this.raise(x.ThisParamMustBeFirst,t.params[n]);super.checkParams(t,s,i,r)}}parseParenAndDistinguishExpression(t){return super.parseParenAndDistinguishExpression(t&&!this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start)))}parseSubscripts(t,s,i){if(t.type==="Identifier"&&t.name==="async"&&this.state.noArrowAt.includes(s.index)){this.next();let r=this.startNodeAt(s);r.callee=t,r.arguments=super.parseCallExpressionArguments(),t=this.finishNode(r,"CallExpression")}else if(t.type==="Identifier"&&t.name==="async"&&this.match(43)){let r=this.state.clone(),n=this.tryParse(h=>this.parseAsyncArrowWithTypeParameters(s)||h(),r);if(!n.error&&!n.aborted)return n.node;let o=this.tryParse(()=>super.parseSubscripts(t,s,i),r);if(o.node&&!o.error)return o.node;if(n.node)return this.state=n.failState,n.node;if(o.node)return this.state=o.failState,o.node;throw n.error||o.error}return super.parseSubscripts(t,s,i)}parseSubscript(t,s,i,r){if(this.match(14)&&this.isLookaheadToken_lt()){if(r.optionalChainMember=!0,i)return r.stop=!0,t;this.next();let n=this.startNodeAt(s);return n.callee=t,n.typeArguments=this.flowParseTypeParameterInstantiationInExpression(),this.expect(6),n.arguments=this.parseCallExpressionArguments(),n.optional=!0,this.finishCallExpression(n,!0)}else if(!i&&this.shouldParseTypes()&&(this.match(43)||this.match(47))){let n=this.startNodeAt(s);n.callee=t;let o=this.tryParse(()=>(n.typeArguments=this.flowParseTypeParameterInstantiationCallOrNew(),this.expect(6),n.arguments=super.parseCallExpressionArguments(),r.optionalChainMember&&(n.optional=!1),this.finishCallExpression(n,r.optionalChainMember)));if(o.node)return o.error&&(this.state=o.failState),o.node}return super.parseSubscript(t,s,i,r)}parseNewCallee(t){super.parseNewCallee(t);let s=null;this.shouldParseTypes()&&this.match(43)&&(s=this.tryParse(()=>this.flowParseTypeParameterInstantiationCallOrNew()).node),t.typeArguments=s}parseAsyncArrowWithTypeParameters(t){let s=this.startNodeAt(t);if(this.parseFunctionParams(s,!1),!!this.parseArrow(s))return super.parseArrowExpression(s,void 0,!0)}readToken_mult_modulo(t){let s=this.input.charCodeAt(this.state.pos+1);if(t===42&&s===47&&this.state.hasFlowComment){this.state.hasFlowComment=!1,this.state.pos+=2,this.nextToken();return}super.readToken_mult_modulo(t)}readToken_pipe_amp(t){let s=this.input.charCodeAt(this.state.pos+1);if(t===124&&s===125){this.finishOp(5,2);return}super.readToken_pipe_amp(t)}parseTopLevel(t,s){let i=super.parseTopLevel(t,s);return this.state.hasFlowComment&&this.raise(x.UnterminatedFlowComment,this.state.curPosition()),i}skipBlockComment(){if(this.hasPlugin("flowComments")&&this.skipFlowComment()){if(this.state.hasFlowComment)throw this.raise(x.NestedFlowComment,this.state.startLoc);this.hasFlowCommentCompletion();let t=this.skipFlowComment();t&&(this.state.pos+=t,this.state.hasFlowComment=!0);return}return super.skipBlockComment(this.state.hasFlowComment?"*-/":"*/")}skipFlowComment(){let{pos:t}=this.state,s=2;for(;[32,9].includes(this.input.charCodeAt(t+s));)s++;let i=this.input.charCodeAt(s+t),r=this.input.charCodeAt(s+t+1);return i===58&&r===58?s+2:this.input.slice(s+t,s+t+12)==="flow-include"?s+12:i===58&&r!==58?s:!1}hasFlowCommentCompletion(){if(this.input.indexOf("*/",this.state.pos)===-1)throw this.raise(c.UnterminatedComment,this.state.curPosition())}flowEnumErrorBooleanMemberNotInitialized(t,s){this.raise(x.EnumBooleanMemberNotInitialized,t,s)}flowEnumErrorInvalidMemberInitializer(t,s){return this.raise(s.explicitType?s.explicitType==="symbol"?x.EnumInvalidMemberInitializerSymbolType:x.EnumInvalidMemberInitializerPrimaryType:x.EnumInvalidMemberInitializerUnknownType,t,s)}flowEnumErrorNumberMemberNotInitialized(t,s){this.raise(x.EnumNumberMemberNotInitialized,t,s)}flowEnumErrorStringMemberInconsistentlyInitialized(t,s){this.raise(x.EnumStringMemberInconsistentlyInitialized,t,s)}flowEnumMemberInit(){let t=this.state.startLoc,s=()=>this.match(8)||this.match(4);switch(this.state.type){case 131:{let i=this.parseNumericLiteral(this.state.value);if(s())return{type:"number",loc:i.start,value:i};break}case 130:{let i=this.parseStringLiteral(this.state.value);if(s())return{type:"string",loc:i.start,value:i};break}case 81:case 82:{let i=this.parseBooleanLiteral(this.match(81));if(s())return{type:"boolean",loc:i.start,value:i}}}return{type:"invalid",loc:t}}flowEnumMemberRaw(){let t=this.state.startLoc,s=this.parseIdentifier(!0),i=this.eat(25)?this.flowEnumMemberInit():{type:"none",loc:t};return{id:s,init:i}}flowEnumCheckExplicitTypeMismatch(t,s,i){let{explicitType:r}=s;r!==null&&r!==i&&this.flowEnumErrorInvalidMemberInitializer(t,s)}flowEnumMembers({enumName:t,explicitType:s}){let i=new Set,r={booleanMembers:[],numberMembers:[],stringMembers:[],defaultedMembers:[]},n=!1;for(;!this.match(4);){if(this.eat(17)){n=!0;break}let o=this.startNode(),{id:h,init:l}=this.flowEnumMemberRaw(),p=h.name;if(p==="")continue;/^[a-z]/.test(p)&&this.raise(x.EnumInvalidMemberName,h,{memberName:p,suggestion:p[0].toUpperCase()+p.slice(1),enumName:t}),i.has(p)&&this.raise(x.EnumDuplicateMemberName,h,{memberName:p,enumName:t}),i.add(p);let u={enumName:t,explicitType:s,memberName:p};switch(o.id=h,l.type){case"boolean":{this.flowEnumCheckExplicitTypeMismatch(l.loc,u,"boolean"),o.init=l.value,r.booleanMembers.push(this.finishNode(o,"EnumBooleanMember"));break}case"number":{this.flowEnumCheckExplicitTypeMismatch(l.loc,u,"number"),o.init=l.value,r.numberMembers.push(this.finishNode(o,"EnumNumberMember"));break}case"string":{this.flowEnumCheckExplicitTypeMismatch(l.loc,u,"string"),o.init=l.value,r.stringMembers.push(this.finishNode(o,"EnumStringMember"));break}case"invalid":throw this.flowEnumErrorInvalidMemberInitializer(l.loc,u);case"none":switch(s){case"boolean":this.flowEnumErrorBooleanMemberNotInitialized(l.loc,u);break;case"number":this.flowEnumErrorNumberMemberNotInitialized(l.loc,u);break;default:r.defaultedMembers.push(this.finishNode(o,"EnumDefaultedMember"))}}this.match(4)||this.expect(8)}return{members:r,hasUnknownMembers:n}}flowEnumStringMembers(t,s,{enumName:i}){if(t.length===0)return s;if(s.length===0)return t;if(s.length>t.length){for(let r of t)this.flowEnumErrorStringMemberInconsistentlyInitialized(r,{enumName:i});return s}else{for(let r of s)this.flowEnumErrorStringMemberInconsistentlyInitialized(r,{enumName:i});return t}}flowEnumParseExplicitType({enumName:t}){if(!this.eatContextual(98))return null;if(!C(this.state.type))throw this.raise(x.EnumInvalidExplicitTypeUnknownSupplied,this.state.startLoc,{enumName:t});let{value:s}=this.state;return this.next(),s!=="boolean"&&s!=="number"&&s!=="string"&&s!=="symbol"&&this.raise(x.EnumInvalidExplicitType,this.state.startLoc,{enumName:t,invalidEnumType:s}),s}flowEnumBody(t,s){let i=s.name,r=s.start,n=this.flowEnumParseExplicitType({enumName:i});this.expect(2);let{members:o,hasUnknownMembers:h}=this.flowEnumMembers({enumName:i,explicitType:n});switch(t.hasUnknownMembers=h,n){case"boolean":return t.explicitType=!0,t.members=o.booleanMembers,this.expect(4),this.finishNode(t,"EnumBooleanBody");case"number":return t.explicitType=!0,t.members=o.numberMembers,this.expect(4),this.finishNode(t,"EnumNumberBody");case"string":return t.explicitType=!0,t.members=this.flowEnumStringMembers(o.stringMembers,o.defaultedMembers,{enumName:i}),this.expect(4),this.finishNode(t,"EnumStringBody");case"symbol":return t.members=o.defaultedMembers,this.expect(4),this.finishNode(t,"EnumSymbolBody");default:{let l=()=>(t.members=[],this.expect(4),this.finishNode(t,"EnumStringBody"));t.explicitType=!1;let p=o.booleanMembers.length,u=o.numberMembers.length,f=o.stringMembers.length,m=o.defaultedMembers.length;if(!p&&!u&&!f&&!m)return l();if(!p&&!u)return t.members=this.flowEnumStringMembers(o.stringMembers,o.defaultedMembers,{enumName:i}),this.expect(4),this.finishNode(t,"EnumStringBody");if(!u&&!f&&p>=m){for(let P of o.defaultedMembers)this.flowEnumErrorBooleanMemberNotInitialized(P.start,{enumName:i,memberName:P.id.name});return t.members=o.booleanMembers,this.expect(4),this.finishNode(t,"EnumBooleanBody")}else if(!p&&!f&&u>=m){for(let P of o.defaultedMembers)this.flowEnumErrorNumberMemberNotInitialized(P.start,{enumName:i,memberName:P.id.name});return t.members=o.numberMembers,this.expect(4),this.finishNode(t,"EnumNumberBody")}else return this.raise(x.EnumInconsistentMemberValues,r,{enumName:i}),l()}}}flowParseEnumDeclaration(t){let s=this.parseIdentifier();return t.id=s,t.body=this.flowEnumBody(this.startNode(),s),this.finishNode(t,"EnumDeclaration")}jsxParseOpeningElementAfterName(t){return this.shouldParseTypes()&&(this.match(43)||this.match(47))&&(t.typeArguments=this.flowParseTypeParameterInstantiationInExpression()),super.jsxParseOpeningElementAfterName(t)}isLookaheadToken_lt(){let t=this.nextTokenStart();if(this.input.charCodeAt(t)===60){let s=this.input.charCodeAt(t+1);return s!==60&&s!==61}return!1}reScan_lt_gt(){let{type:t}=this.state;t===43?(this.state.pos-=1,this.readToken_lt()):t===44&&(this.state.pos-=1,this.readToken_gt())}reScan_lt(){let{type:t}=this.state;return t===47?(this.state.pos-=2,this.finishOp(43,1),43):t}maybeUnwrapTypeCastExpression(t){return t.type==="TypeCastExpression"?t.expression:t}},Ei={__proto__:null,quot:'"',amp:"&",apos:"'",lt:"<",gt:">",nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",frac34:"\xBE",iquest:"\xBF",Agrave:"\xC0",Aacute:"\xC1",Acirc:"\xC2",Atilde:"\xC3",Auml:"\xC4",Aring:"\xC5",AElig:"\xC6",Ccedil:"\xC7",Egrave:"\xC8",Eacute:"\xC9",Ecirc:"\xCA",Euml:"\xCB",Igrave:"\xCC",Iacute:"\xCD",Icirc:"\xCE",Iuml:"\xCF",ETH:"\xD0",Ntilde:"\xD1",Ograve:"\xD2",Oacute:"\xD3",Ocirc:"\xD4",Otilde:"\xD5",Ouml:"\xD6",times:"\xD7",Oslash:"\xD8",Ugrave:"\xD9",Uacute:"\xDA",Ucirc:"\xDB",Uuml:"\xDC",Yacute:"\xDD",THORN:"\xDE",szlig:"\xDF",agrave:"\xE0",aacute:"\xE1",acirc:"\xE2",atilde:"\xE3",auml:"\xE4",aring:"\xE5",aelig:"\xE6",ccedil:"\xE7",egrave:"\xE8",eacute:"\xE9",ecirc:"\xEA",euml:"\xEB",igrave:"\xEC",iacute:"\xED",icirc:"\xEE",iuml:"\xEF",eth:"\xF0",ntilde:"\xF1",ograve:"\xF2",oacute:"\xF3",ocirc:"\xF4",otilde:"\xF5",ouml:"\xF6",divide:"\xF7",oslash:"\xF8",ugrave:"\xF9",uacute:"\xFA",ucirc:"\xFB",uuml:"\xFC",yacute:"\xFD",thorn:"\xFE",yuml:"\xFF",OElig:"\u0152",oelig:"\u0153",Scaron:"\u0160",scaron:"\u0161",Yuml:"\u0178",fnof:"\u0192",circ:"\u02C6",tilde:"\u02DC",Alpha:"\u0391",Beta:"\u0392",Gamma:"\u0393",Delta:"\u0394",Epsilon:"\u0395",Zeta:"\u0396",Eta:"\u0397",Theta:"\u0398",Iota:"\u0399",Kappa:"\u039A",Lambda:"\u039B",Mu:"\u039C",Nu:"\u039D",Xi:"\u039E",Omicron:"\u039F",Pi:"\u03A0",Rho:"\u03A1",Sigma:"\u03A3",Tau:"\u03A4",Upsilon:"\u03A5",Phi:"\u03A6",Chi:"\u03A7",Psi:"\u03A8",Omega:"\u03A9",alpha:"\u03B1",beta:"\u03B2",gamma:"\u03B3",delta:"\u03B4",epsilon:"\u03B5",zeta:"\u03B6",eta:"\u03B7",theta:"\u03B8",iota:"\u03B9",kappa:"\u03BA",lambda:"\u03BB",mu:"\u03BC",nu:"\u03BD",xi:"\u03BE",omicron:"\u03BF",pi:"\u03C0",rho:"\u03C1",sigmaf:"\u03C2",sigma:"\u03C3",tau:"\u03C4",upsilon:"\u03C5",phi:"\u03C6",chi:"\u03C7",psi:"\u03C8",omega:"\u03C9",thetasym:"\u03D1",upsih:"\u03D2",piv:"\u03D6",ensp:"\u2002",emsp:"\u2003",thinsp:"\u2009",zwnj:"\u200C",zwj:"\u200D",lrm:"\u200E",rlm:"\u200F",ndash:"\u2013",mdash:"\u2014",lsquo:"\u2018",rsquo:"\u2019",sbquo:"\u201A",ldquo:"\u201C",rdquo:"\u201D",bdquo:"\u201E",dagger:"\u2020",Dagger:"\u2021",bull:"\u2022",hellip:"\u2026",permil:"\u2030",prime:"\u2032",Prime:"\u2033",lsaquo:"\u2039",rsaquo:"\u203A",oline:"\u203E",frasl:"\u2044",euro:"\u20AC",image:"\u2111",weierp:"\u2118",real:"\u211C",trade:"\u2122",alefsym:"\u2135",larr:"\u2190",uarr:"\u2191",rarr:"\u2192",darr:"\u2193",harr:"\u2194",crarr:"\u21B5",lArr:"\u21D0",uArr:"\u21D1",rArr:"\u21D2",dArr:"\u21D3",hArr:"\u21D4",forall:"\u2200",part:"\u2202",exist:"\u2203",empty:"\u2205",nabla:"\u2207",isin:"\u2208",notin:"\u2209",ni:"\u220B",prod:"\u220F",sum:"\u2211",minus:"\u2212",lowast:"\u2217",radic:"\u221A",prop:"\u221D",infin:"\u221E",ang:"\u2220",and:"\u2227",or:"\u2228",cap:"\u2229",cup:"\u222A",int:"\u222B",there4:"\u2234",sim:"\u223C",cong:"\u2245",asymp:"\u2248",ne:"\u2260",equiv:"\u2261",le:"\u2264",ge:"\u2265",sub:"\u2282",sup:"\u2283",nsub:"\u2284",sube:"\u2286",supe:"\u2287",oplus:"\u2295",otimes:"\u2297",perp:"\u22A5",sdot:"\u22C5",lceil:"\u2308",rceil:"\u2309",lfloor:"\u230A",rfloor:"\u230B",lang:"\u2329",rang:"\u232A",loz:"\u25CA",spades:"\u2660",clubs:"\u2663",hearts:"\u2665",diams:"\u2666"},Ni=/\r\n|[\r\n\u2028\u2029]/,gt=new RegExp(Ni.source,"g");function st(a){switch(a){case 10:case 13:case 8232:case 8233:return!0;default:return!1}}function ze(a,e,t){for(let s=e;s<t;s++)if(st(a.charCodeAt(s)))return!0;return!1}var Bt=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,Rt=/(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g;function ki(a){switch(a){case 9:case 11:case 12:case 32:case 160:case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8239:case 8287:case 12288:case 65279:return!0;default:return!1}}var vi={AttributeIsEmpty:"JSX attributes must only be assigned a non-empty expression.",MissingClosingTagElement:({openingTagName:a})=>`Expected corresponding JSX closing tag for <${a}>.`,MissingClosingTagFragment:"Expected corresponding JSX closing tag for <>.",UnexpectedSequenceExpression:"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",UnexpectedToken:({unexpected:a,HTMLEntity:e})=>`Unexpected token \`${a}\`. Did you mean \`${e}\` or \`{'${a}'}\`?`,UnsupportedJsxValue:"JSX value should be either an expression or a quoted JSX text.",UnterminatedJsxContent:"Unterminated JSX contents.",UnwrappedAdjacentJSXElements:"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?"},V=R`jsx`(vi);function H(a){return a?a.type==="JSXOpeningFragment"||a.type==="JSXClosingFragment":!1}function et(a){if(a.type==="JSXIdentifier")return a.name;if(a.type==="JSXNamespacedName")return a.namespace.name+":"+a.name.name;if(a.type==="JSXMemberExpression")return et(a.object)+"."+et(a.property);throw new Error("Node had unexpected type: "+a.type)}var Li=a=>class extends a{jsxReadToken(){let t="",s=this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(V.UnterminatedJsxContent,this.state.startLoc);let i=this.input.charCodeAt(this.state.pos);switch(i){case 60:case 123:if(this.state.pos===this.state.start){i===60&&this.state.canStartJSXElement?(++this.state.pos,this.finishToken(138)):super.getTokenFromCode(i);return}t+=this.input.slice(s,this.state.pos),this.finishToken(137,t);return;case 38:t+=this.input.slice(s,this.state.pos),t+=this.jsxReadEntity(),s=this.state.pos;break;case 62:case 125:this.raise(V.UnexpectedToken,this.state.curPosition(),{unexpected:this.input[this.state.pos],HTMLEntity:i===125?"}":">"});default:st(i)?(t+=this.input.slice(s,this.state.pos),t+=this.jsxReadNewLine(!0),s=this.state.pos):++this.state.pos}}}jsxReadNewLine(t){let s=this.input.charCodeAt(this.state.pos),i;return++this.state.pos,s===13&&this.input.charCodeAt(this.state.pos)===10?(++this.state.pos,i=t?`
|
|
6
|
+
`:`\r
|
|
7
|
+
`):i=String.fromCharCode(s),++this.state.curLine,this.state.lineStart=this.state.pos,i}jsxReadString(t){let s="",i=++this.state.pos;for(;;){if(this.state.pos>=this.length)throw this.raise(c.UnterminatedString,this.state.startLoc);let r=this.input.charCodeAt(this.state.pos);if(r===t)break;r===38?(s+=this.input.slice(i,this.state.pos),s+=this.jsxReadEntity(),i=this.state.pos):st(r)?(s+=this.input.slice(i,this.state.pos),s+=this.jsxReadNewLine(!1),i=this.state.pos):++this.state.pos}s+=this.input.slice(i,this.state.pos++),this.finishToken(130,s)}jsxReadEntity(){let t=++this.state.pos;if(this.codePointAtPos(this.state.pos)===35){++this.state.pos;let s=10;this.codePointAtPos(this.state.pos)===120&&(s=16,++this.state.pos);let i=this.readInt(s,void 0,!1,"bail");if(i!==null&&this.codePointAtPos(this.state.pos)===59)return++this.state.pos,String.fromCodePoint(i)}else{let s=0,i=!1;for(;s++<10&&this.state.pos<this.length&&!(i=this.codePointAtPos(this.state.pos)===59);)++this.state.pos;if(i){let r=this.input.slice(t,this.state.pos),n=Ei[r];if(++this.state.pos,n)return n}}return this.state.pos=t,"&"}jsxReadWord(){let t,s=this.state.pos;do t=this.input.charCodeAt(++this.state.pos);while(G(t)||t===45);this.finishToken(136,this.input.slice(s,this.state.pos))}jsxParseIdentifier(){let t=this.startNode();return this.match(136)?t.name=this.state.value:xe(this.state.type)?t.name=W(this.state.type):this.unexpected(),this.next(),this.finishNode(t,"JSXIdentifier")}jsxParseNamespacedName(){let t=this.state.startLoc,s=this.jsxParseIdentifier();if(!this.eat(10))return s;let i=this.startNodeAt(t);return i.namespace=s,i.name=this.jsxParseIdentifier(),this.finishNode(i,"JSXNamespacedName")}jsxParseElementName(){let t=this.state.startLoc,s=this.jsxParseNamespacedName();if(s.type==="JSXNamespacedName")return s;for(;this.eat(12);){let i=this.startNodeAt(t);i.object=s,i.property=this.jsxParseIdentifier(),s=this.finishNode(i,"JSXMemberExpression")}return s}jsxParseAttributeValue(){let t;switch(this.state.type){case 2:return t=this.startNode(),this.setContext(E.brace),this.next(),t=this.jsxParseExpressionContainer(t,E.j_oTag),t.expression.type==="JSXEmptyExpression"&&this.raise(V.AttributeIsEmpty,t),t;case 138:case 130:return this.parseExprAtom();default:throw this.raise(V.UnsupportedJsxValue,this.state.startLoc)}}jsxParseEmptyExpression(){let t=this.startNodeAt(this.state.lastTokEndLoc);return this.finishNodeAt(t,"JSXEmptyExpression",this.state.startLoc)}jsxParseSpreadChild(t){return this.next(),t.expression=this.parseExpression(),this.setContext(E.j_expr),this.state.canStartJSXElement=!0,this.expect(4),this.finishNode(t,"JSXSpreadChild")}jsxParseExpressionContainer(t,s){if(this.match(4))t.expression=this.jsxParseEmptyExpression();else{let i=this.parseExpression();i.type==="SequenceExpression"&&!i.extra?.parenthesized&&this.raise(V.UnexpectedSequenceExpression,i.expressions[1]),t.expression=i}return this.setContext(s),this.state.canStartJSXElement=!0,this.expect(4),this.finishNode(t,"JSXExpressionContainer")}jsxParseAttribute(){if(this.match(2)){let s=this.startNode();return this.setContext(E.brace),this.next(),this.expect(17),s.argument=this.parseMaybeAssignAllowIn(),this.setContext(E.j_oTag),this.state.canStartJSXElement=!0,this.expect(4),this.finishNode(s,"JSXSpreadAttribute")}let t=this.startNode();return t.name=this.jsxParseNamespacedName(),t.value=this.eat(25)?this.jsxParseAttributeValue():null,this.finishNode(t,"JSXAttribute")}jsxParseOpeningElementAt(t){if(this.eat(139)){let i=this.startNodeAt(t);return this.finishNode(i,"JSXOpeningFragment")}let s=this.startNodeAt(t);return s.name=this.jsxParseElementName(),this.jsxParseOpeningElementAfterName(s)}jsxParseOpeningElementAfterName(t){let s=[];for(;!this.match(52)&&!this.match(139);)s.push(this.jsxParseAttribute());return t.attributes=s,t.selfClosing=this.eat(52),this.expect(139),this.finishNode(t,"JSXOpeningElement")}jsxParseClosingElementAt(t){if(this.eat(139)){let i=this.startNodeAt(t);return this.finishNode(i,"JSXClosingFragment")}let s=this.startNodeAt(t);return s.name=this.jsxParseElementName(),this.expect(139),this.finishNode(s,"JSXClosingElement")}jsxParseElementAt(t){let s=this.startNodeAt(t),i=[],r=this.jsxParseOpeningElementAt(t),n=null;if(!r.selfClosing){t:for(;;)switch(this.state.type){case 138:if(t=this.state.startLoc,this.next(),this.eat(52)){this.setLoc(t),n=this.jsxParseClosingElementAt(t);break t}i.push(this.jsxParseElementAt(t));break;case 137:i.push(this.parseLiteral(this.state.value,"JSXText"));break;case 2:{let o=this.startNode();this.setContext(E.brace),this.next(),this.match(17)?i.push(this.jsxParseSpreadChild(o)):i.push(this.jsxParseExpressionContainer(o,E.j_expr));break}default:this.unexpected()}H(r)&&!H(n)&&n!==null?this.raise(V.MissingClosingTagFragment,n):!H(r)&&H(n)?this.raise(V.MissingClosingTagElement,n,{openingTagName:et(r.name)}):!H(r)&&!H(n)&&et(n.name)!==et(r.name)&&this.raise(V.MissingClosingTagElement,n,{openingTagName:et(r.name)})}if(H(r)?(s.openingFragment=r,s.closingFragment=n):(s.openingElement=r,s.closingElement=n),s.children=i,this.match(43))throw this.raise(V.UnwrappedAdjacentJSXElements,this.state.startLoc);return H(r)?this.finishNode(s,"JSXFragment"):this.finishNode(s,"JSXElement")}jsxParseElement(){let t=this.state.startLoc;return this.next(),this.jsxParseElementAt(t)}setContext(t){let{context:s}=this.state;s[s.length-1]=t}parseExprAtom(t){return this.match(138)?this.jsxParseElement():this.match(43)&&this.input.charCodeAt(this.state.pos)!==33?(this.replaceToken(138),this.jsxParseElement()):super.parseExprAtom(t)}skipSpace(){this.curContext().preserveSpace||super.skipSpace()}getTokenFromCode(t){let s=this.curContext();if(s===E.j_expr){this.jsxReadToken();return}if(s===E.j_oTag||s===E.j_cTag){if(_(t)){this.jsxReadWord();return}if(t===62){++this.state.pos,this.finishToken(139);return}if((t===34||t===39)&&s===E.j_oTag){this.jsxReadString(t);return}}if(t===60&&this.state.canStartJSXElement&&this.input.charCodeAt(this.state.pos+1)!==33){++this.state.pos,this.finishToken(138);return}super.getTokenFromCode(t)}updateContext(t){let{context:s,type:i}=this.state;if(i===52&&t===138)s.splice(-2,2,E.j_cTag),this.state.canStartJSXElement=!1;else if(i===138)s.push(E.j_oTag);else if(i===139){let r=s[s.length-1];r===E.j_oTag&&t===52||r===E.j_cTag?(s.pop(),this.state.canStartJSXElement=s[s.length-1]===E.j_expr):(this.setContext(E.j_expr),this.state.canStartJSXElement=!0)}else this.state.canStartJSXElement=ri(i)}},Ht=class extends ut{tsNames=new Map},Kt=class extends ft{get inTSNamespace(){let e=this.scopeStack;return e.length>=2&&e[e.length-1].flags===0&&(e[e.length-2].flags&2048)>0}importsStack=[];createScope(e){return this.importsStack.push(new Set),new Ht(e)}enter(e){e&3072&&this.importsStack.push(new Set),super.enter(e)}exit(){let e=super.exit();return e&3072&&this.importsStack.pop(),e}hasImport(e,t){let s=this.importsStack.length;if(this.importsStack[s-1].has(e))return!0;if(!t&&s>1){for(let i=0;i<s-1;i++)if(this.importsStack[i].has(e))return!0}return!1}declareName(e,t,s){if(t&4096){this.hasImport(e,!0)&&this.parser.raise(c.VarRedeclaration,s,{identifierName:e}),this.importsStack[this.importsStack.length-1].add(e);return}let i=this.currentScope(),r=i.tsNames.get(e)||0;if(t&1024){this.maybeExportDefined(i,e),i.tsNames.set(e,r|16);return}super.declareName(e,t,s),t&2&&(t&1||(this.checkRedeclarationInScope(i,e,t,s),this.maybeExportDefined(i,e)),r=r|1),t&256&&(r=r|2),t&512&&(r=r|4),t&128&&(r=r|8),r&&i.tsNames.set(e,r)}isRedeclaredInScope(e,t,s){let i=e.tsNames.get(t);if((i&2)>0){if(s&256){let r=(s&512)>0,n=(i&4)>0;return r!==n}return!0}return s&128&&(i&8)>0?e.names.get(t)&2?!!(s&1):!1:s&2&&(i&1)>0?!0:super.isRedeclaredInScope(e,t,s)}checkLocalExport(e){let{name:t}=e;if(this.hasImport(t))return;let s=this.scopeStack.length;for(let i=s-1;i>=0;i--){let n=this.scopeStack[i].tsNames.get(t);if((n&1)>0||(n&16)>0)return}super.checkLocalExport(e)}},Wt=class{sawUnambiguousESM=!1;ambiguousScriptDifferentAst=!1;sourceToOffsetPos(e){return e+this.startIndex}offsetToSourcePos(e){return e-this.startIndex}hasPlugin(e){if(typeof e=="string")return this.plugins.has(e);{let[t,s]=e;if(!this.hasPlugin(t))return!1;let i=this.plugins.get(t);for(let r of Object.keys(s))if(i?.[r]!==s[r])return!1;return!0}}getPluginOption(e,t){return this.plugins.get(e)?.[t]}};function os(a,e){a.trailingComments===void 0?a.trailingComments=e:a.trailingComments.unshift(...e)}function Di(a,e){a.leadingComments===void 0?a.leadingComments=e:a.leadingComments.unshift(...e)}function dt(a,e){a.innerComments===void 0?a.innerComments=e:a.innerComments.unshift(...e)}function K(a,e,t){let s=null,i=e.length;for(;s===null&&i>0;)s=e[--i];s===null||s.start>t.start?dt(a,t.comments):os(s,t.comments)}var Jt=class extends Wt{addComment(e){this.filename&&(e.loc.filename=this.filename);let{commentsLen:t}=this.state;this.comments.length!==t&&(this.comments.length=t),this.comments.push(e),this.state.commentsLen++}processComment(e){let{commentStack:t}=this.state,s=t.length;if(s===0)return;let i=s-1,r=t[i];r.start===e.end&&(r.leadingNode=e,i--);let n=e.start;for(;i>=0;i--){let o=t[i],h=o.end;if(h>n)o.containingNode=e,this.finalizeComment(o),t.splice(i,1);else{h===n&&(o.trailingNode=e);break}}}finalizeComment(e){let{comments:t}=e;if(e.leadingNode!==null||e.trailingNode!==null)e.leadingNode!==null&&os(e.leadingNode,t),e.trailingNode!==null&&Di(e.trailingNode,t);else{let s=e.containingNode,i=e.start;if(this.input.charCodeAt(this.offsetToSourcePos(i)-1)===44)switch(s.type){case"ObjectExpression":case"ObjectPattern":K(s,s.properties,e);break;case"CallExpression":case"NewExpression":case"OptionalCallExpression":K(s,s.arguments,e);break;case"ImportExpression":K(s,[s.source,s.options??null],e);break;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":case"ObjectMethod":case"ClassMethod":case"ClassPrivateMethod":case"TSTypeParameterDeclaration":K(s,s.params,e);break;case"ArrayExpression":case"ArrayPattern":K(s,s.elements,e);break;case"ExportNamedDeclaration":case"ImportDeclaration":K(s,s.specifiers,e);break;case"TSEnumBody":K(s,s.members,e);break;case"TSInterfaceBody":K(s,s.body,e);break;default:dt(s,t)}else dt(s,t)}}finalizeRemainingComments(){let{commentStack:e}=this.state;for(let t=e.length-1;t>=0;t--)this.finalizeComment(e[t]);this.state.commentStack=[]}resetPreviousNodeTrailingComments(e){let{commentStack:t}=this.state,{length:s}=t;if(s===0)return;let i=t[s-1];i.leadingNode===e&&(i.leadingNode=null)}takeSurroundingComments(e,t,s){let{commentStack:i}=this.state,r=i.length;if(r===0)return;let n=r-1;for(;n>=0;n--){let o=i[n],h=o.end;if(o.start===s)o.leadingNode=e;else if(h===t)o.trailingNode=e;else if(h<t)break}}},Xt=class a{flags=2048;get strict(){return(this.flags&1)>0}set strict(e){e?this.flags|=1:this.flags&=-2}startIndex;curLine;lineStart;startLoc;endLoc;init({strictMode:e,sourceType:t,startIndex:s,startLine:i,startColumn:r}){this.strict=e===!1?!1:e===!0?!0:t==="module",this.startIndex=s,this.curLine=i,this.lineStart=-r,this.startLoc=this.endLoc=new D(i,r,s)}errors=[];noArrowAt=[];noArrowParamsConversionAt=[];get canStartArrow(){return(this.flags&2)>0}set canStartArrow(e){e?this.flags|=2:this.flags&=-3}get inType(){return(this.flags&4)>0}set inType(e){e?this.flags|=4:this.flags&=-5}get noAnonFunctionType(){return(this.flags&8)>0}set noAnonFunctionType(e){e?this.flags|=8:this.flags&=-9}get hasFlowComment(){return(this.flags&16)>0}set hasFlowComment(e){e?this.flags|=16:this.flags&=-17}get isAmbientContext(){return(this.flags&32)>0}set isAmbientContext(e){e?this.flags|=32:this.flags&=-33}get inAbstractClass(){return(this.flags&64)>0}set inAbstractClass(e){e?this.flags|=64:this.flags&=-65}get inDisallowConditionalTypesContext(){return(this.flags&128)>0}set inDisallowConditionalTypesContext(e){e?this.flags|=128:this.flags&=-129}get inConditionalConsequent(){return(this.flags&256)>0}set inConditionalConsequent(e){e?this.flags|=256:this.flags&=-257}get inHackPipelineBody(){return(this.flags&512)>0}set inHackPipelineBody(e){e?this.flags|=512:this.flags&=-513}get seenTopicReference(){return(this.flags&1024)>0}set seenTopicReference(e){e?this.flags|=1024:this.flags&=-1025}labels=[];commentsLen=0;commentStack=[];pos=0;type=135;value=null;start=0;end=0;lastTokEndLoc=null;lastTokStartLoc=null;context=[E.brace];get canStartJSXElement(){return(this.flags&2048)>0}set canStartJSXElement(e){e?this.flags|=2048:this.flags&=-2049}get containsEsc(){return(this.flags&4096)>0}set containsEsc(e){e?this.flags|=4096:this.flags&=-4097}firstInvalidTemplateEscapePos=null;get hasTopLevelAwait(){return(this.flags&8192)>0}set hasTopLevelAwait(e){e?this.flags|=8192:this.flags&=-8193}strictErrors=new Map;tokensLength=0;curPosition(){return new D(this.curLine,this.pos-this.lineStart,this.pos+this.startIndex)}clone(){let e=new a;return e.flags=this.flags,e.startIndex=this.startIndex,e.curLine=this.curLine,e.lineStart=this.lineStart,e.startLoc=this.startLoc,e.endLoc=this.endLoc,e.errors=this.errors.slice(),e.noArrowAt=this.noArrowAt.slice(),e.noArrowParamsConversionAt=this.noArrowParamsConversionAt.slice(),e.labels=this.labels.slice(),e.commentsLen=this.commentsLen,e.commentStack=this.commentStack.slice(),e.pos=this.pos,e.type=this.type,e.value=this.value,e.start=this.start,e.end=this.end,e.lastTokEndLoc=this.lastTokEndLoc,e.lastTokStartLoc=this.lastTokStartLoc,e.context=this.context.slice(),e.firstInvalidTemplateEscapePos=this.firstInvalidTemplateEscapePos,e.strictErrors=this.strictErrors,e.tokensLength=this.tokensLength,e}},Mi=function(e){return e>=48&&e<=57},He={decBinOct:new Set([46,66,69,79,95,98,101,111]),hex:new Set([46,88,95,120])},Pt={bin:a=>a===48||a===49,oct:a=>a>=48&&a<=55,dec:a=>a>=48&&a<=57,hex:a=>a>=48&&a<=57||a>=65&&a<=70||a>=97&&a<=102};function Ke(a,e,t,s,i,r){let n=t,o=s,h=i,l="",p=null,u=t,{length:f}=e;for(;;){if(t>=f){r.unterminated(n,o,h),l+=e.slice(u,t);break}let m=e.charCodeAt(t);if(Oi(a,m,e,t)){l+=e.slice(u,t);break}if(m===92){l+=e.slice(u,t);let P=Fi(e,t,s,i,a==="template",r);P.ch===null&&!p?p={pos:t,lineStart:s,curLine:i}:l+=P.ch,{pos:t,lineStart:s,curLine:i}=P,u=t}else m===8232||m===8233?(++t,++i,s=t):m===10||m===13?a==="template"?(l+=e.slice(u,t)+`
|
|
8
|
+
`,++t,m===13&&e.charCodeAt(t)===10&&++t,++i,u=s=t):r.unterminated(n,o,h):++t}return{pos:t,str:l,firstInvalidLoc:p,lineStart:s,curLine:i}}function Oi(a,e,t,s){return a==="template"?e===96||e===36&&t.charCodeAt(s+1)===123:e===(a==="double"?34:39)}function Fi(a,e,t,s,i,r){let n=!i;e++;let o=l=>({pos:e,ch:l,lineStart:t,curLine:s}),h=a.charCodeAt(e++);switch(h){case 110:return o(`
|
|
9
|
+
`);case 114:return o("\r");case 120:{let l;return{code:l,pos:e}=Gt(a,e,t,s,2,!1,n,r),o(l===null?null:String.fromCharCode(l))}case 117:{let l;return{code:l,pos:e}=ls(a,e,t,s,n,r),o(l===null?null:String.fromCodePoint(l))}case 116:return o(" ");case 98:return o("\b");case 118:return o("\v");case 102:return o("\f");case 13:a.charCodeAt(e)===10&&++e;case 10:t=e,++s;case 8232:case 8233:return o("");case 56:case 57:if(i)return o(null);r.strictNumericEscape(e-1,t,s);default:if(h>=48&&h<=55){let l=e-1,u=/^[0-7]+/.exec(a.slice(l,e+2))[0],f=parseInt(u,8);f>255&&(u=u.slice(0,-1),f=parseInt(u,8)),e+=u.length-1;let m=a.charCodeAt(e);if(u!=="0"||m===56||m===57){if(i)return o(null);r.strictNumericEscape(l,t,s)}return o(String.fromCharCode(f))}return o(String.fromCharCode(h))}}function Gt(a,e,t,s,i,r,n,o){let h=e,l;return{n:l,pos:e}=hs(a,e,t,s,16,i,r,!1,o,!n),l===null&&(n?o.invalidEscapeSequence(h,t,s):e=h-1),{code:l,pos:e}}function hs(a,e,t,s,i,r,n,o,h,l){let p=e,u=i===16?He.hex:He.decBinOct,f=i===16?Pt.hex:i===10?Pt.dec:i===8?Pt.oct:Pt.bin,m=!1,P=0;for(let N=0,k=r??1/0;N<k;++N){let I=a.charCodeAt(e),w;if(I===95&&o!=="bail"){let $=a.charCodeAt(e-1),q=a.charCodeAt(e+1);if(o){if(Number.isNaN(q)||!f(q)||u.has($)||u.has(q)){if(l)return{n:null,pos:e};h.unexpectedNumericSeparator(e,t,s)}}else{if(l)return{n:null,pos:e};h.numericSeparatorInEscapeSequence(e,t,s)}++e;continue}if(I>=97?w=I-97+10:I>=65?w=I-65+10:Mi(I)?w=I-48:w=1/0,w>=i){if(w<=9&&l)return{n:null,pos:e};if(w<=9&&h.invalidDigit(e,t,s,i))w=0;else if(n)w=0,m=!0;else break}++e,P=P*i+w}return e===p||r!=null&&e-p!==r||m?{n:null,pos:e}:{n:P,pos:e}}function ls(a,e,t,s,i,r){let n=a.charCodeAt(e),o;if(n===123){if(++e,{code:o,pos:e}=Gt(a,e,t,s,a.indexOf("}",e)-e,!0,i,r),++e,o!==null&&o>1114111)if(i)r.invalidCodePoint(e,t,s);else return{code:null,pos:e}}else({code:o,pos:e}=Gt(a,e,t,s,4,!1,i,r));return{code:o,pos:e}}function lt(a,e,t){return new D(t,a-e,a)}var Bi=new Set([103,109,115,105,121,117,100,118]),Yt=class{constructor(e){let t=e.startIndex||0;this.type=e.type,this.value=e.value,this.start=t+e.start,this.end=t+e.end,this.loc=new rt(e.startLoc,e.endLoc)}},Tt,Qt=class extends Jt{isLookahead;tokens=[];constructor(e,t){super(),this.state=new Xt,this.state.init(e),this.input=t,this.length=t.length,this.comments=[],this.isLookahead=!1,(!Tt||Tt.length<(this.length+1)*2)&&(Tt=new Uint32Array((this.length+1)*2)),this.locData=Tt}setLoc(e){let t=this.offsetToSourcePos(e.index);this.locData[t*2]=e.line,this.locData[t*2+1]=e.column}getLoc(e){let t=this.offsetToSourcePos(e);return new D(this.locData[t*2],this.locData[t*2+1],e)}pushToken(e){this.tokens.length=this.state.tokensLength,this.tokens.push(e),++this.state.tokensLength}next(){this.checkKeywordEscapes(),this.optionFlags&512&&this.pushToken(new Yt(this.state)),this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()}eat(e){return this.match(e)?(this.next(),!0):!1}match(e){return this.state.type===e}createLookaheadState(e){return{pos:e.pos,value:null,type:e.type,start:e.start,end:e.end,context:[this.curContext()],inType:e.inType,startLoc:e.startLoc,lastTokEndLoc:e.lastTokEndLoc,curLine:e.curLine,lineStart:e.lineStart,curPosition:e.curPosition}}lookahead(){let e=this.state;this.state=this.createLookaheadState(e),this.isLookahead=!0,this.nextToken(),this.isLookahead=!1;let t=this.state;return this.state=e,t}nextTokenStart(){return this.nextTokenStartSince(this.state.pos)}nextTokenStartSince(e){return Bt.lastIndex=e,Bt.test(this.input)?Bt.lastIndex:e}lookaheadCharCode(){return this.lookaheadCharCodeSince(this.state.pos)}lookaheadCharCodeSince(e){return this.input.charCodeAt(this.nextTokenStartSince(e))}nextTokenInLineStart(){return this.nextTokenInLineStartSince(this.state.pos)}nextTokenInLineStartSince(e){return Rt.lastIndex=e,Rt.test(this.input)?Rt.lastIndex:e}lookaheadInLineCharCode(){return this.input.charCodeAt(this.nextTokenInLineStart())}codePointAtPos(e){let t=this.input.charCodeAt(e);if((t&64512)===55296&&++e<this.input.length){let s=this.input.charCodeAt(e);(s&64512)===56320&&(t=65536+((t&1023)<<10)+(s&1023))}return t}setStrict(e){this.state.strict=e,e&&(this.state.strictErrors.forEach(([t,s])=>this.raise(t,s)),this.state.strictErrors.clear())}curContext(){return this.state.context[this.state.context.length-1]}nextToken(){if(this.skipSpace(),this.state.start=this.state.pos,this.isLookahead||(this.state.startLoc=this.state.curPosition()),this.state.pos>=this.length){this.finishToken(135);return}this.getTokenFromCode(this.codePointAtPos(this.state.pos))}skipBlockComment(e){let t;this.isLookahead||(t=this.state.curPosition());let s=this.state.pos,i=this.input.indexOf(e,s+2);if(i===-1)throw this.raise(c.UnterminatedComment,this.state.curPosition());for(this.state.pos=i+e.length,gt.lastIndex=s+2;gt.test(this.input)&>.lastIndex<=i;)++this.state.curLine,this.state.lineStart=gt.lastIndex;if(this.isLookahead)return;let r={type:"CommentBlock",value:this.input.slice(s+2,i),start:this.sourceToOffsetPos(s),end:this.sourceToOffsetPos(i+e.length),loc:new rt(t,this.state.curPosition())};return this.optionFlags&512&&this.pushToken(r),r}skipLineComment(e){let t=this.state.pos,s;this.isLookahead||(s=this.state.curPosition());let i=this.input.charCodeAt(this.state.pos+=e);if(this.state.pos<this.length)for(;!st(i)&&++this.state.pos<this.length;)i=this.input.charCodeAt(this.state.pos);if(this.isLookahead)return;let r=this.state.pos,o={type:"CommentLine",value:this.input.slice(t+e,r),start:this.sourceToOffsetPos(t),end:this.sourceToOffsetPos(r),loc:new rt(s,this.state.curPosition())};return this.optionFlags&512&&this.pushToken(o),o}skipSpace(){let e=this.state.pos,t=this.optionFlags&8192?[]:null;t:for(;this.state.pos<this.length;){let s=this.input.charCodeAt(this.state.pos);switch(s){case 32:case 160:case 9:++this.state.pos;break;case 13:this.input.charCodeAt(this.state.pos+1)===10&&++this.state.pos;case 10:case 8232:case 8233:++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;break;case 47:switch(this.input.charCodeAt(this.state.pos+1)){case 42:{let i=this.skipBlockComment("*/");i!==void 0&&(this.addComment(i),t?.push(i));break}case 47:{let i=this.skipLineComment(2);i!==void 0&&(this.addComment(i),t?.push(i));break}default:break t}break;default:if(ki(s))++this.state.pos;else if(s===45&&!this.inModule&&this.optionFlags&16384){let i=this.state.pos;if(this.input.charCodeAt(i+1)===45&&this.input.charCodeAt(i+2)===62&&(e===0||this.state.lineStart>e)){let r=this.skipLineComment(3);r!==void 0&&(this.addComment(r),t?.push(r))}else break t}else if(s===60&&!this.inModule&&this.optionFlags&16384){let i=this.state.pos;if(this.input.charCodeAt(i+1)===33&&this.input.charCodeAt(i+2)===45&&this.input.charCodeAt(i+3)===45){let r=this.skipLineComment(4);r!==void 0&&(this.addComment(r),t?.push(r))}else break t}else break t}}if(t?.length>0){let s=this.state.pos,i={start:this.sourceToOffsetPos(e),end:this.sourceToOffsetPos(s),comments:t,leadingNode:null,trailingNode:null,containingNode:null};this.state.commentStack.push(i)}}finishToken(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();let s=this.state.type;this.state.type=e,this.state.value=t,this.isLookahead||this.updateContext(s)}replaceToken(e){this.state.type=e,this.updateContext()}readToken_numberSign(){if(this.state.pos===0&&this.readToken_interpreter())return;let e=this.state.pos+1,t=this.codePointAtPos(e);if(t>=48&&t<=57)throw this.raise(c.UnexpectedDigitAfterHash,this.state.curPosition());_(t)?(++this.state.pos,this.finishToken(134,this.readWord1(t))):t===92?(++this.state.pos,this.finishToken(134,this.readWord1())):this.finishOp(23,1)}readToken_dot(){let e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57){this.readNumber(!0);return}e===46&&this.input.charCodeAt(this.state.pos+2)===46?(this.state.pos+=3,this.finishToken(17)):(++this.state.pos,this.finishToken(12))}readToken_slash(){this.input.charCodeAt(this.state.pos+1)===61?this.finishOp(27,2):this.finishOp(52,1)}readToken_interpreter(){if(this.state.pos!==0||this.length<2)return!1;let e=this.input.charCodeAt(this.state.pos+1);if(e!==33)return!1;let t=this.state.pos;for(this.state.pos+=1;!st(e)&&++this.state.pos<this.length;)e=this.input.charCodeAt(this.state.pos);let s=this.input.slice(t+2,this.state.pos);return this.finishToken(24,s),!0}readToken_mult_modulo(e){let t=e===42?51:50,s=1,i=this.input.charCodeAt(this.state.pos+1);e===42&&i===42&&(s++,i=this.input.charCodeAt(this.state.pos+2),t=53),i===61&&!this.state.inType&&(s++,t=e===37?29:26),this.finishOp(t,s)}readToken_pipe_amp(e){let t=this.input.charCodeAt(this.state.pos+1);if(t===e){this.input.charCodeAt(this.state.pos+2)===61?this.finishOp(26,3):this.finishOp(e===124?37:38,2);return}if(e===124&&t===62){this.finishOp(35,2);return}if(t===61){this.finishOp(26,2);return}this.finishOp(e===124?39:41,1)}readToken_caret(){let e=this.input.charCodeAt(this.state.pos+1);e===61&&!this.state.inType?this.finishOp(28,2):e===94&&this.hasPlugin(["pipelineOperator",{proposal:"hack",topicToken:"^^"}])?(this.finishOp(33,2),this.input.codePointAt(this.state.pos)===94&&this.unexpected()):this.finishOp(40,1)}readToken_atSign(){this.input.charCodeAt(this.state.pos+1)===64&&this.hasPlugin(["pipelineOperator",{proposal:"hack",topicToken:"@@"}])?this.finishOp(34,2):this.finishOp(22,1)}readToken_plus_min(e){let t=this.input.charCodeAt(this.state.pos+1);if(t===e){this.finishOp(30,2);return}t===61?this.finishOp(26,2):this.finishOp(49,1)}readToken_lt(){let{pos:e}=this.state,t=this.input.charCodeAt(e+1);if(t===60){if(this.input.charCodeAt(e+2)===61){this.finishOp(26,3);return}this.finishOp(47,2);return}if(t===61){this.finishOp(45,2);return}this.finishOp(43,1)}readToken_gt(){let{pos:e}=this.state,t=this.input.charCodeAt(e+1);if(t===62){let s=this.input.charCodeAt(e+2)===62?3:2;if(this.input.charCodeAt(e+s)===61){this.finishOp(26,s+1);return}this.finishOp(48,s);return}if(t===61){this.finishOp(45,2);return}this.finishOp(44,1)}readToken_eq_excl(e){let t=this.input.charCodeAt(this.state.pos+1);if(t===61){this.finishOp(42,this.input.charCodeAt(this.state.pos+2)===61?3:2);return}if(e===61&&t===62){this.state.pos+=2,this.finishToken(15);return}this.finishOp(e===61?25:31,1)}readToken_question(){let e=this.input.charCodeAt(this.state.pos+1),t=this.input.charCodeAt(this.state.pos+2);e===63?t===61?this.finishOp(26,3):this.finishOp(36,2):e===46&&!(t>=48&&t<=57)?(this.state.pos+=2,this.finishToken(14)):(++this.state.pos,this.finishToken(13))}getTokenFromCode(e){switch(e){case 46:this.readToken_dot();return;case 40:++this.state.pos,this.finishToken(6);return;case 41:++this.state.pos,this.finishToken(7);return;case 59:++this.state.pos,this.finishToken(9);return;case 44:++this.state.pos,this.finishToken(8);return;case 91:++this.state.pos,this.finishToken(0);return;case 93:++this.state.pos,this.finishToken(1);return;case 123:++this.state.pos,this.finishToken(2);return;case 125:++this.state.pos,this.finishToken(4);return;case 58:this.hasPlugin("functionBind")&&this.input.charCodeAt(this.state.pos+1)===58?this.finishOp(11,2):(++this.state.pos,this.finishToken(10));return;case 63:this.readToken_question();return;case 96:this.readTemplateToken();return;case 48:{let t=this.input.charCodeAt(this.state.pos+1);if(t===120||t===88){this.readRadixNumber(16);return}if(t===111||t===79){this.readRadixNumber(8);return}if(t===98||t===66){this.readRadixNumber(2);return}}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:this.readNumber(!1);return;case 34:case 39:this.readString(e);return;case 47:this.readToken_slash();return;case 37:case 42:this.readToken_mult_modulo(e);return;case 124:case 38:this.readToken_pipe_amp(e);return;case 94:this.readToken_caret();return;case 43:case 45:this.readToken_plus_min(e);return;case 60:this.readToken_lt();return;case 62:this.readToken_gt();return;case 61:case 33:this.readToken_eq_excl(e);return;case 126:this.finishOp(32,1);return;case 64:this.readToken_atSign();return;case 35:this.readToken_numberSign();return;case 92:this.readWord();return;default:if(_(e)){this.readWord(e);return}}throw this.raise(c.InvalidOrUnexpectedToken,this.state.curPosition(),{unexpected:String.fromCodePoint(e)})}finishOp(e,t){let s=this.input.slice(this.state.pos,this.state.pos+t);this.state.pos+=t,this.finishToken(e,s)}readRegexp(){let e=this.state.startLoc,t=this.state.start+1,s,i,{pos:r}=this.state;for(;;++r){if(r>=this.length)throw this.raise(c.UnterminatedRegExp,O(e,1));let l=this.input.charCodeAt(r);if(st(l))throw this.raise(c.UnterminatedRegExp,O(e,1));if(s)s=!1;else{if(l===91)i=!0;else if(l===93&&i)i=!1;else if(l===47&&!i)break;s=l===92}}let n=this.input.slice(t,r);++r;let o="",h=()=>O(e,r+2-t);for(;r<this.length;){let l=this.codePointAtPos(r),p=String.fromCharCode(l);if(Bi.has(l))l===118?o.includes("u")&&this.raise(c.IncompatibleRegExpUVFlags,h()):l===117&&o.includes("v")&&this.raise(c.IncompatibleRegExpUVFlags,h()),o.includes(p)&&this.raise(c.DuplicateRegExpFlags,h());else if(G(l)||l===92)this.raise(c.MalformedRegExpFlags,h());else break;++r,o+=p}this.state.pos=r,this.finishToken(133,{pattern:n,flags:o})}readInt(e,t,s=!1,i=!0){let{n:r,pos:n}=hs(this.input,this.state.pos,this.state.lineStart,this.state.curLine,e,t,s,i,this.errorHandlers_readInt,!1);return this.state.pos=n,r}readRadixNumber(e){let t=this.state.pos,s=this.state.curPosition(),i=!1;this.state.pos+=2;let r=this.readInt(e);if(r==null&&this.raise(c.InvalidDigit,O(s,2),{radix:e}),this.input.charCodeAt(this.state.pos)===110&&(++this.state.pos,i=!0),_(this.codePointAtPos(this.state.pos)))throw this.raise(c.NumberIdentifier,this.state.curPosition());if(i){let o=this.input.slice(t,this.state.pos).replace(/[_n]/g,"");this.finishToken(132,o);return}this.finishToken(131,r)}readNumber(e){let t=this.state.pos,s=this.state.curPosition(),i=!1,r=!1,n=!1;!e&&this.readInt(10)===null&&this.raise(c.InvalidNumber,this.state.curPosition());let o=this.state.pos-t>=2&&this.input.charCodeAt(t)===48;if(o){let u=this.input.slice(t,this.state.pos);if(this.recordStrictModeErrors(c.StrictOctalLiteral,s),!this.state.strict){let f=u.indexOf("_");f>0&&this.raise(c.ZeroDigitNumericSeparator,O(s,f))}n=o&&!/[89]/.test(u)}let h=this.input.charCodeAt(this.state.pos);h===46&&!n&&(++this.state.pos,this.readInt(10),i=!0,h=this.input.charCodeAt(this.state.pos)),(h===69||h===101)&&!n&&(h=this.input.charCodeAt(++this.state.pos),(h===43||h===45)&&++this.state.pos,this.readInt(10)===null&&this.raise(c.InvalidOrMissingExponent,s),i=!0,h=this.input.charCodeAt(this.state.pos));let l=this.input.slice(t,this.state.pos).replaceAll("_","");if(h===110&&((i||o)&&this.raise(c.InvalidBigIntLiteral,s),++this.state.pos,r=!0),_(this.codePointAtPos(this.state.pos)))throw this.raise(c.NumberIdentifier,this.state.curPosition());if(r){this.finishToken(132,l);return}let p=n?parseInt(l,8):parseFloat(l);this.finishToken(131,p)}readCodePoint(e){let{code:t,pos:s}=ls(this.input,this.state.pos,this.state.lineStart,this.state.curLine,e,this.errorHandlers_readCodePoint);return this.state.pos=s,t}readString(e){let{str:t,pos:s,curLine:i,lineStart:r}=Ke(e===34?"double":"single",this.input,this.state.pos+1,this.state.lineStart,this.state.curLine,this.errorHandlers_readStringContents_string);this.state.pos=s+1,this.state.lineStart=r,this.state.curLine=i,this.finishToken(130,t)}readTemplateContinuation(){this.match(4)||this.unexpected(null,4),this.state.pos--,this.readTemplateToken()}readTemplateToken(){let e=this.input[this.state.pos],{str:t,firstInvalidLoc:s,pos:i,curLine:r,lineStart:n}=Ke("template",this.input,this.state.pos+1,this.state.lineStart,this.state.curLine,this.errorHandlers_readStringContents_template);this.state.pos=i+1,this.state.lineStart=n,this.state.curLine=r,s&&(this.state.firstInvalidTemplateEscapePos=new D(s.curLine,s.pos-s.lineStart,this.sourceToOffsetPos(s.pos))),this.input.codePointAt(i)===96?this.finishToken(20,s?null:e+t+"`"):(this.state.pos++,this.finishToken(21,s?null:e+t+"${"))}recordStrictModeErrors(e,t){let s=t.index;this.state.strict&&!this.state.strictErrors.has(s)?this.raise(e,t):this.state.strictErrors.set(s,[e,t])}readWord1(e){this.state.containsEsc=!1;let t="",s=this.state.pos,i=this.state.pos;for(e!==void 0&&(this.state.pos+=e<=65535?1:2);this.state.pos<this.length;){let r=this.codePointAtPos(this.state.pos);if(G(r))this.state.pos+=r<=65535?1:2;else if(r===92){this.state.containsEsc=!0,t+=this.input.slice(i,this.state.pos);let n=this.state.curPosition(),o=this.state.pos===s?_:G;if(this.input.charCodeAt(++this.state.pos)!==117){this.raise(c.MissingUnicodeEscape,this.state.curPosition()),i=this.state.pos-1;continue}++this.state.pos;let h=this.readCodePoint(!0);h!==null&&(o(h)||this.raise(c.EscapedCharNotAnIdentifier,n),t+=String.fromCodePoint(h)),i=this.state.pos}else break}return t+this.input.slice(i,this.state.pos)}readWord(e){let t=this.readWord1(e),s=ce.get(t);s!==void 0?this.finishToken(s,W(s)):this.finishToken(128,t)}checkKeywordEscapes(){let{type:e}=this.state;xe(e)&&this.state.containsEsc&&this.raise(c.InvalidEscapedReservedWord,this.state.startLoc,{reservedWord:W(e)})}raise(e,t,s={}){let i=t instanceof D?t:typeof t=="number"?this.getLoc(t):this.optionFlags&256?t.loc.start:this.getLoc(t.start),r=t instanceof D?i.index:typeof t=="number"?t:t.start,n=e(i,r,s);if(!(this.optionFlags&4096))throw n;return this.isLookahead||this.state.errors.push(n),n}raiseOverwrite(e,t,s={}){let i=t instanceof D?t:this.optionFlags&256?t.loc.start:this.getLoc(t.start),r=t instanceof D?i.index:t.start,n=this.state.errors;for(let o=n.length-1;o>=0;o--){let h=n[o];if(h.pos===r)return n[o]=e(i,r,s);if(h.pos<r)break}return this.raise(e,i,s)}updateContext(e){}unexpected(e,t){throw this.raise(c.UnexpectedToken,e??this.state.startLoc,{expected:t?W(t):null})}expectPlugin(e,t){if(this.hasPlugin(e))return!0;throw this.raise(c.MissingPlugin,t??this.state.startLoc,{missingPlugin:[e]})}expectOnePlugin(e){if(!e.some(t=>this.hasPlugin(t)))throw this.raise(c.MissingOneOfPlugins,this.state.startLoc,{missingPlugin:e})}errorBuilder(e){return(t,s,i)=>{this.raise(e,lt(t,s,i))}}errorHandlers_readInt={invalidDigit:(e,t,s,i)=>this.optionFlags&4096?(this.raise(c.InvalidDigit,lt(e,t,s),{radix:i}),!0):!1,numericSeparatorInEscapeSequence:this.errorBuilder(c.NumericSeparatorInEscapeSequence),unexpectedNumericSeparator:this.errorBuilder(c.UnexpectedNumericSeparator)};errorHandlers_readCodePoint={...this.errorHandlers_readInt,invalidEscapeSequence:this.errorBuilder(c.InvalidEscapeSequence),invalidCodePoint:this.errorBuilder(c.InvalidCodePoint)};errorHandlers_readStringContents_string={...this.errorHandlers_readCodePoint,strictNumericEscape:(e,t,s)=>{this.recordStrictModeErrors(c.StrictNumericEscape,lt(e,t,s))},unterminated:(e,t,s)=>{throw this.raise(c.UnterminatedString,lt(e-1,t,s))}};errorHandlers_readStringContents_template={...this.errorHandlers_readCodePoint,strictNumericEscape:this.errorBuilder(c.StrictNumericEscape),unterminated:(e,t,s)=>{throw this.raise(c.UnterminatedTemplate,lt(e,t,s))}}},Zt=class{privateNames=new Set;loneAccessors=new Map;undefinedPrivateNames=new Map},te=class{parser;stack=[];constructor(e){this.parser=e}current(){return this.stack[this.stack.length-1]}enter(){this.stack.push(new Zt)}exit(){let e=this.stack.pop(),t=this.current();for(let[s,i]of Array.from(e.undefinedPrivateNames))t?t.undefinedPrivateNames.has(s)||t.undefinedPrivateNames.set(s,i):this.parser.raise(c.InvalidPrivateFieldResolution,i,{identifierName:s})}declarePrivateName(e,t,s){let{privateNames:i,loneAccessors:r,undefinedPrivateNames:n}=this.current(),o=i.has(e);if(t&3){let h=o&&r.get(e);if(h){let l=h&4,p=t&4,u=h&3,f=t&3;o=u===f||l!==p,o||r.delete(e)}else o||r.set(e,t)}o&&this.parser.raise(c.PrivateNameRedeclaration,s,{identifierName:e}),i.add(e),n.delete(e)}usePrivateName(e,t){let s;for(s of this.stack)if(s.privateNames.has(e))return;s?s.undefinedPrivateNames.set(e,t):this.parser.raise(c.InvalidPrivateFieldResolution,t,{identifierName:e})}},at=class{constructor(e=0){this.type=e}canBeArrowParameterDeclaration(){return this.type===2||this.type===1}isCertainlyParameterDeclaration(){return this.type===3}},wt=class extends at{declarationErrors=new Map;constructor(e){super(e)}recordDeclarationError(e,t){this.declarationErrors.set(t,e)}clearDeclarationError(e){this.declarationErrors.delete(e)}iterateErrors(e){this.declarationErrors.forEach(e)}},ee=class{parser;stack=[new at];constructor(e){this.parser=e}enter(e){this.stack.push(e)}exit(){this.stack.pop()}recordParameterInitializerError(e,t){let{stack:s}=this,i=s.length-1,r=s[i];for(;!r.isCertainlyParameterDeclaration();){if(r.canBeArrowParameterDeclaration())r.recordDeclarationError(e,t);else return;r=s[--i]}this.parser.raise(e,t)}recordArrowParameterBindingError(e,t){let{stack:s}=this,i=s[s.length-1],r=t.start;if(i.isCertainlyParameterDeclaration())this.parser.raise(e,r);else if(i.canBeArrowParameterDeclaration())i.recordDeclarationError(e,r);else return}recordAsyncArrowParametersError(e){let{stack:t}=this,s=t.length-1,i=t[s];for(;i.canBeArrowParameterDeclaration();)i.type===2&&i.recordDeclarationError(c.AwaitBindingIdentifier,e),i=t[--s]}validateAsPattern(){let{stack:e}=this,t=e[e.length-1];t.canBeArrowParameterDeclaration()&&t.iterateErrors((s,i)=>{this.parser.raise(s,i);let r=e.length-2,n=e[r];for(;n.canBeArrowParameterDeclaration();)n.clearDeclarationError(i),n=e[--r]})}};function Ri(){return new at(3)}function Ui(){return new wt(1)}function ji(){return new wt(2)}function cs(){return new at}var se=class{stacks=[];enter(e){this.stacks.push(e)}exit(){this.stacks.pop()}currentFlags(){return this.stacks[this.stacks.length-1]}get hasAwait(){return(this.currentFlags()&2)>0}get hasYield(){return(this.currentFlags()&1)>0}get hasReturn(){return(this.currentFlags()&4)>0}get hasIn(){return(this.currentFlags()&8)>0}get inFSharpPipelineDirectBody(){return(this.currentFlags()&16)===0}};function Ct(a,e){return(a?2:0)|(e?1:0)}var ie=class extends Qt{addExtra(e,t,s,i=!0){if(!e)return;let{extra:r}=e;r==null&&(r={},e.extra=r),i?r[t]=s:Object.defineProperty(r,t,{enumerable:i,value:s})}isContextual(e){return this.state.type===e&&!this.state.containsEsc}isUnparsedContextual(e,t){if(this.input.startsWith(t,e)){let s=this.input.charCodeAt(e+t.length);return!(G(s)||(s&64512)===55296)}return!1}isLookaheadContextual(e){let t=this.nextTokenStart();return this.isUnparsedContextual(t,e)}eatContextual(e){return this.isContextual(e)?(this.next(),!0):!1}expectContextual(e,t){if(!this.eatContextual(e)){if(t!=null)throw this.raise(t,this.state.startLoc);this.unexpected(null,e)}}canInsertSemicolon(){return this.match(135)||this.match(4)||this.hasPrecedingLineBreak()}hasPrecedingLineBreak(){return ze(this.input,this.offsetToSourcePos(this.state.lastTokEndLoc.index),this.state.start)}hasFollowingLineBreak(){return ze(this.input,this.state.end,this.nextTokenStart())}isLineTerminator(){return this.eat(9)||this.canInsertSemicolon()}semicolon(e=!0){(e?this.isLineTerminator():this.eat(9))||this.raise(c.MissingSemicolon,this.state.lastTokEndLoc)}expect(e,t){this.eat(e)||this.unexpected(t,e)}tryParse(e,t=this.state.clone()){let s={node:null};try{let i=e((r=null)=>{throw s.node=r,s});if(this.state.errors.length>t.errors.length){let r=this.state;return this.state=t,this.state.tokensLength=r.tokensLength,{node:i,error:r.errors[t.errors.length],thrown:!1,aborted:!1,failState:r}}return{node:i,error:null,thrown:!1,aborted:!1,failState:null}}catch(i){let r=this.state;if(this.state=t,i instanceof SyntaxError)return{node:null,error:i,thrown:!0,aborted:!1,failState:r};if(i===s)return{node:s.node,error:null,thrown:!1,aborted:!0,failState:r};throw i}}checkExpressionErrors(e,t){if(!e)return!1;let{shorthandAssignLoc:s,doubleProtoLoc:i,privateKeyLoc:r,optionalParametersLoc:n,voidPatternLoc:o}=e,h=!!s||!!i||!!n||!!r||!!o;if(!t)return h;s!=null&&this.raise(c.InvalidCoverInitializedName,s),i!=null&&this.raise(c.DuplicateProto,i),r!=null&&this.raise(c.UnexpectedPrivateField,r),n!=null&&this.unexpected(n),o!=null&&this.raise(c.InvalidCoverDiscardElement,o)}isLiteralPropertyName(){return ts(this.state.type)}isPrivateName(e){return e.type==="PrivateName"}getPrivateNameSV(e){return e.id.name}hasPropertyAsPrivateName(e){return(e.type==="MemberExpression"||e.type==="OptionalMemberExpression")&&this.isPrivateName(e.property)}isObjectProperty(e){return e.type==="ObjectProperty"}isObjectMethod(e){return e.type==="ObjectMethod"}initializeScopes(e=this.options.sourceType==="module"){let t=this.state.labels;this.state.labels=[];let s=this.exportedIdentifiers;this.exportedIdentifiers=new Set;let i=this.inModule;this.inModule=e;let r=this.scope,n=this.getScopeHandler();this.scope=new n(this,e);let o=this.prodParam;this.prodParam=new se;let h=this.classScope;this.classScope=new te(this);let l=this.expressionScope;return this.expressionScope=new ee(this),()=>{this.state.labels=t,this.exportedIdentifiers=s,this.inModule=i,this.scope=r,this.prodParam=o,this.classScope=h,this.expressionScope=l}}enterInitialScopes(){let e=0;(this.inModule||this.optionFlags&1)&&(e|=2),this.optionFlags&32&&(e|=1);let t=!this.inModule&&this.options.sourceType==="commonjs";(t||this.optionFlags&2)&&(e|=4),this.prodParam.enter(e);let s=t?514:1;this.optionFlags&4&&(s|=512),this.optionFlags&16&&(s|=48),this.scope.enter(s)}checkDestructuringPrivate(e){let{privateKeyLoc:t}=e;t!==null&&this.expectPlugin("destructuringPrivate",t)}},it=class{shorthandAssignLoc=null;doubleProtoLoc=null;privateKeyLoc=null;optionalParametersLoc=null;voidPatternLoc=null},X=class{constructor(e,t,s,i){this.start=s,this.end=0,i!==void 0&&(this.loc=new rt(i)),e&128&&(this.range=[s,0]),i!==void 0&&t&&(this.loc.filename=t)}type=""},We=X.prototype,re=class extends ie{createPosition(e){return e}startNode(){let{startLoc:e}=this.state;return this.setLoc(e),this.startNodeAt(e)}startNodeAt(e){let{optionFlags:t,filename:s}=this;return t&256?new X(t,s,e.index,this.createPosition(e)):new X(t,s,e.index)}startNodeAtNode(e){let{optionFlags:t,filename:s}=this;return t&256?new X(t,s,e.start,e.loc.start):new X(t,s,e.start)}finishNode(e,t){return this.finishNodeAt(e,t,this.state.lastTokEndLoc)}finishNodeAt(e,t,s){e.type=t,e.end=s.index;let{optionFlags:i}=this;return i&256&&(e.loc.end=this.createPosition(s)),i&128&&(e.range[1]=s.index),i&8192&&this.processComment(e),e}finishNodeAtNode(e,t,s){e.type=t,e.end=s.end;let{optionFlags:i}=this;return i&256&&(e.loc.end=s.loc.end),i&128&&(e.range[1]=e.end),i&8192&&this.processComment(e),e}resetStartLocation(e,t){e.start=t.index;let{optionFlags:s}=this;s&256&&(e.loc.start=this.createPosition(t)),s&128&&(e.range[0]=t.index)}resetEndLocation(e,t=this.state.lastTokEndLoc){e.end=t.index;let{optionFlags:s}=this;s&256&&(e.loc.end=this.createPosition(t)),s&128&&(e.range[1]=t.index)}resetStartLocationFromNode(e,t){e.start=t.start;let{optionFlags:s}=this;s&256&&(e.loc.start=t.loc.start),s&128&&(e.range[0]=t.start)}resetEndLocationFromNode(e,t){e.end=t.end;let{optionFlags:s}=this;s&256&&(e.loc.end=t.loc.end),s&128&&(e.range[1]=t.end)}castNodeTo(e,t){return e.type=t,e}cloneIdentifier(e){let{type:t,start:s,end:i,loc:r,range:n,name:o}=e,h=Object.create(We);return h.type=t,h.start=s,h.end=i,h.loc=r,h.range=n,h.name=o,e.extra&&(h.extra=e.extra),h}cloneStringLiteral(e){let{type:t,start:s,end:i,loc:r,range:n,extra:o}=e,h=Object.create(We);return h.type=t,h.start=s,h.end=i,h.loc=r,h.range=n,h.extra=o,h.value=e.value,h}},ae=a=>a.type==="ParenthesizedExpression"?ae(a.expression):a,ne=class extends re{toAssignable(e,t=!1){let s;switch((e.type==="ParenthesizedExpression"||e.extra?.parenthesized)&&(s=ae(e),t?s.type==="Identifier"?this.expressionScope.recordArrowParameterBindingError(c.InvalidParenthesizedAssignment,e):s.type!=="CallExpression"&&s.type!=="MemberExpression"&&!this.isOptionalMemberExpression(s)&&this.raise(c.InvalidParenthesizedAssignment,e):this.raise(c.InvalidParenthesizedAssignment,e)),e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":case"VoidPattern":break;case"ObjectExpression":this.castNodeTo(e,"ObjectPattern");for(let i=0,r=e.properties.length,n=r-1;i<r;i++){let o=e.properties[i],h=i===n;this.toAssignableObjectExpressionProp(o,h,t),h&&o.type==="RestElement"&&e.extra?.trailingCommaLoc&&this.raise(c.RestTrailingComma,e.extra.trailingCommaLoc)}break;case"ObjectProperty":{let{key:i,value:r}=e;this.isPrivateName(i)&&this.classScope.usePrivateName(this.getPrivateNameSV(i),i.start),this.toAssignable(r,t);break}case"SpreadElement":throw new Error("Internal @babel/parser error (this is a bug, please report it). SpreadElement should be converted by .toAssignable's caller.");case"ArrayExpression":this.castNodeTo(e,"ArrayPattern"),this.toAssignableList(e.elements,e.extra?.trailingCommaLoc,t);break;case"AssignmentExpression":e.operator!=="="&&this.raise(c.MissingEqInAssignment,this.optionFlags&256?e.left.loc.end:e.left),this.castNodeTo(e,"AssignmentPattern"),delete e.operator,e.left.type==="VoidPattern"&&this.raise(c.VoidPatternInitializer,e.left),this.toAssignable(e.left,t);break;case"ParenthesizedExpression":this.toAssignable(s,t);break}}toAssignableObjectExpressionProp(e,t,s){if(e.type==="ObjectMethod")this.raise(e.kind==="get"||e.kind==="set"?c.PatternHasAccessor:c.PatternHasMethod,e.key);else if(e.type==="SpreadElement"){this.castNodeTo(e,"RestElement");let i=e.argument;this.checkToRestConversion(i,!1),this.toAssignable(i,s),t||this.raise(c.RestTrailingComma,e)}else this.toAssignable(e,s)}toAssignableList(e,t,s){let i=e.length-1;for(let r=0;r<=i;r++){let n=e[r];n&&(this.toAssignableListItem(e,r,s),n.type==="RestElement"&&(r<i?this.raise(c.RestTrailingComma,n):t&&this.raise(c.RestTrailingComma,t)))}}toAssignableListItem(e,t,s){let i=e[t];if(i.type==="SpreadElement"){this.castNodeTo(i,"RestElement");let r=i.argument;this.checkToRestConversion(r,!0),this.toAssignable(r,s)}else this.toAssignable(i,s)}isAssignable(e,t){switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":case"VoidPattern":return!0;case"ObjectExpression":{let s=e.properties.length-1;return e.properties.every((i,r)=>i.type!=="ObjectMethod"&&(r===s||i.type!=="SpreadElement")&&this.isAssignable(i))}case"ObjectProperty":return this.isAssignable(e.value);case"SpreadElement":return this.isAssignable(e.argument);case"ArrayExpression":return e.elements.every(s=>s===null||this.isAssignable(s));case"AssignmentExpression":return e.operator==="=";case"ParenthesizedExpression":return this.isAssignable(e.expression);case"MemberExpression":case"OptionalMemberExpression":return!t;default:return!1}}toReferencedList(e,t){return e}parseSpread(e){let t=this.startNode();return this.next(),t.argument=this.parseMaybeAssignAllowIn(e,void 0),this.finishNode(t,"SpreadElement")}parseRestBinding(){let e=this.startNode();this.next();let t=this.parseBindingAtom();return t.type==="VoidPattern"&&this.raise(c.UnexpectedVoidPattern,t),e.argument=t,this.finishNode(e,"RestElement")}parseBindingAtom(){switch(this.state.type){case 0:{let e=this.startNode();return this.next(),e.elements=this.parseBindingList(1,93,1),this.finishNode(e,"ArrayPattern")}case 2:return this.parseObjectLike(4,!0);case 84:return this.parseVoidPattern(null)}return this.parseIdentifier()}parseBindingList(e,t,s){let i=s&1,r=[],n=!0;for(;!this.eat(e);)if(n?n=!1:this.expect(8),i&&this.match(8))r.push(null);else{if(this.eat(e))break;if(this.match(17)){let o=this.parseRestBinding();if(s&2&&(o=this.parseFunctionParamType(o)),r.push(o),!this.checkCommaAfterRest(t)){this.expect(e);break}}else{let o=[];if(s&2)for(this.match(22)&&this.hasPlugin("decorators")&&this.raise(c.UnsupportedParameterDecorator,this.state.startLoc);this.match(22);)o.push(this.parseDecorator());r.push(this.parseBindingElement(s,o))}}return r}parseBindingRestProperty(e){return this.next(),this.hasPlugin("discardBinding")&&this.match(84)?(e.argument=this.parseVoidPattern(null),this.raise(c.UnexpectedVoidPattern,e.argument)):e.argument=this.parseIdentifier(),this.checkCommaAfterRest(125),this.finishNode(e,"RestElement")}parseBindingProperty(){let{type:e,startLoc:t}=this.state;if(e===17)return this.parseBindingRestProperty(this.startNode());let s=this.startNode();return e===134?(this.expectPlugin("destructuringPrivate",t),this.classScope.usePrivateName(this.state.value,t),s.key=this.parsePrivateName()):this.parsePropertyName(s),s.method=!1,this.parseObjPropValue(s,t,!1,!1,!0,!1)}parseBindingElement(e,t){let{startLoc:s}=this.state,i=this.parseMaybeDefault();return e&2&&this.parseFunctionParamType(i),t.length&&(i.decorators=t,this.resetStartLocationFromNode(i,t[0])),this.parseMaybeDefault(s,i)}parseFunctionParamType(e){return e}parseMaybeDefault(e,t){if(e??=this.state.startLoc,t=t??this.parseBindingAtom(),!this.eat(25))return t;let s=this.startNodeAt(e);return t.type==="VoidPattern"&&this.raise(c.VoidPatternInitializer,t),s.left=t,s.right=this.parseMaybeAssignAllowIn(),this.finishNode(s,"AssignmentPattern")}isValidLVal(e,t,s,i){switch(e){case"AssignmentPattern":return"left";case"RestElement":return"argument";case"ObjectProperty":return"value";case"ParenthesizedExpression":return"expression";case"ArrayPattern":return"elements";case"ObjectPattern":return"properties";case"VoidPattern":return!0;case"CallExpression":if(!t&&!this.state.strict&&this.optionFlags&16384)return!0}return!1}isOptionalMemberExpression(e){return e.type==="OptionalMemberExpression"}checkLVal(e,t,s=64,i=!1,r=!1,n=!1,o=!1){let h=e.type;if(this.isObjectMethod(e))return;let l=this.isOptionalMemberExpression(e);if(l||h==="MemberExpression"){l&&(this.expectPlugin("optionalChainingAssign",e.start),t.type!=="AssignmentExpression"&&this.raise(c.InvalidLhsOptionalChaining,e,{ancestor:t})),s!==64&&this.raise(c.InvalidPropertyBindingPattern,e);return}if(h==="Identifier"){this.checkIdentifier(e,s,r);let{name:k}=e;i&&(i.has(k)?this.raise(c.ParamDupe,e):i.add(k));return}else h==="VoidPattern"&&t.type==="CatchClause"&&this.raise(c.VoidPatternCatchClauseParam,e);let p=ae(e);o||=p.type==="CallExpression"&&(p.callee.type==="Import"||p.callee.type==="Super");let u=this.isValidLVal(h,o,!(n||e.extra?.parenthesized)&&t.type==="AssignmentExpression",s);if(u===!0)return;if(u===!1){let k=s===64?c.InvalidLhs:c.InvalidLhsBinding;this.raise(k,e,{ancestor:t});return}let f,m;typeof u=="string"?(f=u,m=h==="ParenthesizedExpression"):[f,m]=u;let P=h==="ArrayPattern"||h==="ObjectPattern"?{type:h}:t,N=e[f];if(Array.isArray(N))for(let k of N)k&&this.checkLVal(k,P,s,i,r,m,!0);else N&&this.checkLVal(N,P,s,i,r,m,o)}checkIdentifier(e,t,s=!1){this.state.strict&&(s?ns(e.name,this.inModule):as(e.name))&&(t===64?this.raise(c.StrictEvalArguments,e,{referenceName:e.name}):this.raise(c.StrictEvalArgumentsBinding,e,{bindingName:e.name})),t&8192&&e.name==="let"&&this.raise(c.LetInLexicalBinding,e),t&64||this.declareNameFromIdentifier(e,t)}declareNameFromIdentifier(e,t){this.scope.declareName(e.name,t,e.start)}checkToRestConversion(e,t){switch(e.type){case"ParenthesizedExpression":this.checkToRestConversion(e.expression,t);break;case"Identifier":case"MemberExpression":break;case"ArrayExpression":case"ObjectExpression":if(t)break;default:this.raise(c.InvalidRestAssignmentPattern,e)}}checkCommaAfterRest(e){return this.match(8)?(this.raise(this.lookaheadCharCode()===e?c.RestTrailingComma:c.ElementAfterRest,this.state.startLoc),!0):!1}},oe=class extends ne{checkProto(e,t,s){if(e.type==="SpreadElement"||this.isObjectMethod(e)||e.computed||e.shorthand)return t;let i=e.key;return(i.type==="Identifier"?i.name:i.value)==="__proto__"?(t&&(s?s.doubleProtoLoc===null&&(s.doubleProtoLoc=this.getLoc(i.start)):this.raise(c.DuplicateProto,i)),!0):t}shouldExitDescending(e){return e.type==="ArrowFunctionExpression"&&!e.extra?.parenthesized}getExpression(){if(this.enterInitialScopes(),this.nextToken(),this.match(135))throw this.raise(c.ParseExpressionEmptyInput,this.state.startLoc);let e=this.parseExpression();if(!this.match(135))throw this.raise(c.ParseExpressionExpectsEOF,this.state.startLoc,{unexpected:this.input.codePointAt(this.state.start)});return this.finalizeRemainingComments(),e.comments=this.comments,e.errors=this.state.errors,this.optionFlags&512&&(e.tokens=ps(this.tokens)),e}parseExpression(e,t){return e?this.disallowInAnd(()=>this.parseExpressionBase(t)):this.allowInAnd(()=>this.parseExpressionBase(t))}parseExpressionBase(e){let t=this.state.startLoc,s=this.parseMaybeAssign(e);if(this.match(8)){let i=this.startNodeAt(t);for(i.expressions=[s];this.eat(8);)i.expressions.push(this.parseMaybeAssign(e));return this.toReferencedList(i.expressions),this.finishNode(i,"SequenceExpression")}return s}parseMaybeAssignDisallowIn(e,t){return this.disallowInAnd(()=>this.parseMaybeAssign(e,t))}parseMaybeAssignAllowIn(e,t){return this.allowInAnd(()=>this.parseMaybeAssign(e,t))}setOptionalParametersError(e){e.optionalParametersLoc=this.state.startLoc}parseMaybeAssign(e,t){let s=this.state.startLoc,i=this.isContextual(104);if(i&&this.prodParam.hasYield){this.next();let o=this.parseYield(s);return t&&(o=t.call(this,o,s)),o}let r;e?r=!1:(e=new it,r=!0),this.state.canStartArrow=!0;let n=this.parseMaybeConditional(e);if(t&&(n=t.call(this,n,s)),ai(this.state.type)){let o=this.startNodeAt(s),h=this.state.value;if(o.operator=h,this.match(25)){this.toAssignable(n,!0),o.left=n;let l=s.index;e.doubleProtoLoc!=null&&e.doubleProtoLoc.index>=l&&(e.doubleProtoLoc=null),e.shorthandAssignLoc!=null&&e.shorthandAssignLoc.index>=l&&(e.shorthandAssignLoc=null),e.privateKeyLoc!=null&&e.privateKeyLoc.index>=l&&(this.checkDestructuringPrivate(e),e.privateKeyLoc=null),e.voidPatternLoc!=null&&e.voidPatternLoc.index>=l&&(e.voidPatternLoc=null)}else o.left=n;return this.next(),o.right=this.parseMaybeAssign(),this.checkLVal(n,this.finishNode(o,"AssignmentExpression"),void 0,void 0,void 0,void 0,h==="||="||h==="&&="||h==="??="),o}else r&&this.checkExpressionErrors(e,!0);if(i){let{type:o}=this.state;if((this.hasPlugin("v8intrinsic")?ct(o):ct(o)&&!this.match(50))&&!this.isAmbiguousPrefixOrIdentifier())return this.raiseOverwrite(c.YieldNotInGeneratorFunction,s),this.parseYield(s)}return n}parseMaybeConditional(e){let t=this.state.startLoc,s=this.parseExprOps(e);return this.shouldExitDescending(s)?s:this.parseConditional(s,t,e)}parseConditional(e,t,s){if(this.eat(13)){let i=this.startNodeAt(t);return i.test=e,i.consequent=this.parseMaybeAssignAllowIn(),this.expect(10),i.alternate=this.parseMaybeAssign(),this.finishNode(i,"ConditionalExpression")}return e}parseMaybeUnaryOrPrivate(e){return this.match(134)?this.parsePrivateName():this.parseMaybeUnary(e)}parseExprOps(e){let t=this.state.startLoc,s=this.parseMaybeUnaryOrPrivate(e);return this.shouldExitDescending(s)?s:(this.state.canStartArrow=!1,this.parseExprOp(s,t,-1))}parseExprOp(e,t,s){if(this.isPrivateName(e)){let r=this.getPrivateNameSV(e);(s>=St(54)||!this.prodParam.hasIn||!this.match(54))&&this.raise(c.PrivateInExpectedIn,t,{identifierName:r}),this.classScope.usePrivateName(r,t)}let i=this.state.type;if(_e(i)&&(this.prodParam.hasIn||!this.match(54))){let r=St(i);if(r>s){if(i===35&&(this.expectPlugin("pipelineOperator"),this.prodParam.inFSharpPipelineDirectBody))return e;let n=this.startNodeAt(t);n.left=e,n.operator=this.state.value;let o=i===37||i===38,h=i===36;h&&(r=St(38)),this.next(),n.right=this.parseExprOpRightExpr(i,r);let l=this.finishNode(n,o||h?"LogicalExpression":"BinaryExpression"),p=this.state.type;if(h&&(p===37||p===38)||o&&p===36)throw this.raise(c.MixingCoalesceWithLogical,this.state.startLoc);return this.parseExprOp(l,t,s)}}return e}parseExprOpRightExpr(e,t){switch(e){case 35:switch(this.getPluginOption("pipelineOperator","proposal")){case"hack":return this.withTopicBindingContext(()=>this.parseHackPipeBody());case"fsharp":return this.parseFSharpPipelineBody(t)}default:return this.parseExprOpBaseRightExpr(e,t)}}parseExprOpBaseRightExpr(e,t){let s=this.state.startLoc;return this.parseExprOp(this.parseMaybeUnaryOrPrivate(),s,pi(e)?t-1:t)}parseHackPipeBody(){let{startLoc:e}=this.state,t=this.parseMaybeAssign();return Js.has(t.type)&&!t.extra?.parenthesized&&this.raise(c.PipeUnparenthesizedBody,e,{type:t.type}),this.topicReferenceWasUsedInCurrentContext()||this.raise(c.PipeTopicUnused,e),t}checkExponentialAfterUnary(e){this.match(53)&&this.raise(c.UnexpectedTokenUnaryExponentiation,e.argument)}parseMaybeUnary(e,t){let s=this.state.startLoc,i=this.isContextual(92);if(i&&this.recordAwaitIfAllowed()){this.next();let h=this.parseAwait(s);return t||this.checkExponentialAfterUnary(h),h}let r=this.match(30),n=this.startNode();if(hi(this.state.type)){n.operator=this.state.value,n.prefix=!0,this.state.canStartArrow=!1,this.match(68)&&this.expectPlugin("throwExpressions");let h=this.match(85);if(this.next(),n.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(e,!0),this.state.strict&&h){let l=n.argument;l.type==="Identifier"?this.raise(c.StrictDelete,n):this.hasPropertyAsPrivateName(l)&&this.raise(c.DeletePrivateField,n)}if(!r)return t||this.checkExponentialAfterUnary(n),this.finishNode(n,"UnaryExpression")}let o=this.parseUpdate(n,r,e);if(i){let{type:h}=this.state;if((this.hasPlugin("v8intrinsic")?ct(h):ct(h)&&!this.match(50))&&!this.isAmbiguousPrefixOrIdentifier())return this.raiseOverwrite(c.AwaitNotInAsyncContext,s),this.parseAwait(s)}return o}parseUpdate(e,t,s){if(t){let n=this.finishNode(e,"UpdateExpression");return this.checkLVal(n.argument,n),n}let i=this.state.startLoc,r=this.parseExprSubscripts(s);if(this.checkExpressionErrors(s,!1))return r;for(;oi(this.state.type)&&!this.canInsertSemicolon();){let n=this.startNodeAt(i);n.operator=this.state.value,n.prefix=!1,n.argument=r,this.next(),this.checkLVal(r,r=this.finishNode(n,"UpdateExpression"))}return r}parseExprSubscripts(e){let t=this.state.startLoc;this.setLoc(t);let s=this.parseExprAtom(e);return this.shouldExitDescending(s)?s:this.parseSubscripts(s,t)}parseSubscripts(e,t,s){let i={optionalChainMember:!1,maybeAsyncArrow:this.atPossibleAsyncArrow(e),stop:!1};do e=this.parseSubscript(e,t,s,i),i.maybeAsyncArrow=!1;while(!i.stop);return e}parseSubscript(e,t,s,i){let{type:r}=this.state;if(!s&&r===11)return this.parseBind(e,t,i);if($t(r))return this.parseTaggedTemplateExpression(e,t,i);let n=!1;if(r===14){if(s&&(this.raise(c.OptionalChainingNoNew,this.state.startLoc),this.lookaheadCharCode()===40))return this.stopParseSubscript(e,i);i.optionalChainMember=n=!0,this.next()}if(!s&&this.match(6))return this.parseCoverCallAndAsyncArrowHead(e,t,i,n);{let o=this.eat(0);return o||n||this.eat(12)?this.parseMember(e,t,i,o,n):this.stopParseSubscript(e,i)}}stopParseSubscript(e,t){return t.stop=!0,e}parseMember(e,t,s,i,r){let n=this.startNodeAt(t);return n.object=e,n.computed=i,i?(n.property=this.parseExpression(),this.expect(1)):this.match(134)?(e.type==="Super"&&this.raise(c.SuperPrivateField,t),this.classScope.usePrivateName(this.state.value,this.state.startLoc),n.property=this.parsePrivateName()):n.property=this.parseIdentifier(!0),s.optionalChainMember?(n.optional=r,this.finishNode(n,"OptionalMemberExpression")):this.finishNode(n,"MemberExpression")}parseBind(e,t,s){let i=this.startNodeAt(t);i.object=e,this.next();let r=this.match(79),n=this.parseNoCallExpr();if(n.type==="Super"||r&&n.type==="ImportExpression"||n.type==="Import")throw this.raise(c.UnsupportedBindRHS,n);return i.callee=n,s.stop=!0,this.parseSubscripts(this.finishNode(i,"BindExpression"),t,!1)}parseCoverCallAndAsyncArrowHead(e,t,s,i){let r=null;this.next();let n=this.startNodeAt(t);n.callee=e;let{maybeAsyncArrow:o,optionalChainMember:h}=s;o&&(this.expressionScope.enter(ji()),r=new it),h&&(n.optional=i),i?n.arguments=this.parseCallExpressionArguments():n.arguments=this.parseCallExpressionArguments(e.type!=="Super",n,r);let l=this.finishCallExpression(n,h);return o&&this.shouldParseAsyncArrow()&&!i?(s.stop=!0,this.checkDestructuringPrivate(r),this.expressionScope.validateAsPattern(),this.expressionScope.exit(),l=this.parseAsyncArrowFromCallExpression(this.startNodeAt(t),l)):(o&&(this.checkExpressionErrors(r,!0),this.expressionScope.exit()),this.toReferencedList(n.arguments)),l}parseTaggedTemplateExpression(e,t,s){let i=this.startNodeAt(t);return i.tag=e,i.quasi=this.parseTemplate(!0),s.optionalChainMember&&this.raise(c.OptionalChainingNoTemplate,t),this.finishNode(i,"TaggedTemplateExpression")}atPossibleAsyncArrow(e){return e.type==="Identifier"&&e.name==="async"&&this.state.lastTokEndLoc.index===e.end&&!this.canInsertSemicolon()&&e.end-e.start===5&&this.state.canStartArrow}finishCallExpression(e,t){if(e.callee.type==="Import")if(e.arguments.length===0||e.arguments.length>2)this.raise(c.ImportCallArity,e);else for(let s of e.arguments)s.type==="SpreadElement"&&this.raise(c.ImportCallSpreadArgument,s);return this.finishNode(e,t?"OptionalCallExpression":"CallExpression")}parseCallExpressionArguments(e,t,s){let i=[],r=!0;for(;!this.eat(7);){if(r)r=!1;else if(this.expect(8),this.match(7)){t&&this.addTrailingCommaExtraToNode(t),this.next();break}i.push(this.parseExprListItem(7,!1,s,e))}return i}shouldParseAsyncArrow(){return this.match(15)&&!this.canInsertSemicolon()}parseAsyncArrowFromCallExpression(e,t){return this.resetPreviousNodeTrailingComments(t),this.expect(15),this.parseArrowExpression(e,t.arguments,!0,t.extra?.trailingCommaLoc),t.innerComments&&dt(e,t.innerComments),t.callee.trailingComments&&dt(e,t.callee.trailingComments),e}parseNoCallExpr(){let e=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,!0)}parseExprAtom(e){let t,s=null,{type:i}=this.state;switch(i){case 75:return this.parseSuper();case 79:return t=this.startNode(),this.next(),this.match(12)?this.parseImportMetaPropertyOrPhaseCall(t):this.match(6)?this.optionFlags&1024?this.parseImportCall(t):this.finishNode(t,"Import"):(this.raise(c.UnsupportedImport,this.state.lastTokStartLoc),this.finishNode(t,"Import"));case 74:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case 86:return this.parseDo(this.startNode(),!1);case 52:case 27:return this.readRegexp(),this.parseRegExpLiteral(this.state.value);case 131:return this.parseNumericLiteral(this.state.value);case 132:return this.parseBigIntLiteral(this.state.value);case 130:return this.parseStringLiteral(this.state.value);case 80:return this.parseNullLiteral();case 81:return this.parseBooleanLiteral(!0);case 82:return this.parseBooleanLiteral(!1);case 6:return this.parseParenAndDistinguishExpression(this.state.canStartArrow);case 0:return this.parseArrayLike(1,e);case 2:return this.parseObjectLike(4,!1,e);case 64:return this.parseFunctionOrFunctionSent();case 22:s=this.parseDecorators();case 76:return this.parseClass(this.maybeTakeDecorators(s,this.startNode()),!1);case 73:return this.parseNewOrNewTarget();case 21:case 20:return this.parseTemplate(!1);case 11:{t=this.startNode(),this.next(),t.object=null;let r=t.callee=this.parseNoCallExpr();if(r.type==="MemberExpression")return this.finishNode(t,"BindExpression");throw this.raise(c.UnsupportedBind,r)}case 134:return this.raise(c.PrivateInExpectedIn,this.state.startLoc,{identifierName:this.state.value}),this.parsePrivateName();case 29:return this.parseTopicReferenceThenEqualsSign(50,"%");case 28:return this.parseTopicReferenceThenEqualsSign(40,"^");case 33:case 34:return this.parseTopicReference("hack");case 40:case 50:case 23:{let r=this.getPluginOption("pipelineOperator","proposal");if(r)return this.parseTopicReference(r);throw this.unexpected()}case 43:{let r=this.input.codePointAt(this.nextTokenStart());throw _(r)||r===62?this.expectOnePlugin(["jsx","flow","typescript"]):this.unexpected()}default:if(C(i)){if(this.isContextual(123)&&this.lookaheadInLineCharCode()===123)return this.parseModuleExpression();let{canStartArrow:r,containsEsc:n}=this.state,o=this.parseIdentifier();if(!n&&o.name==="async"&&!this.canInsertSemicolon()){let{type:h}=this.state;if(h===64)return this.resetPreviousNodeTrailingComments(o),this.next(),this.parseAsyncFunctionExpression(this.startNodeAtNode(o));if(C(h))return r&&this.lookaheadCharCode()===61?this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(o)):o;if(h===86)return this.resetPreviousNodeTrailingComments(o),this.parseDo(this.startNodeAtNode(o),!0)}return r&&this.match(15)&&!this.canInsertSemicolon()?(this.next(),this.parseArrowExpression(this.startNodeAtNode(o),[o],!1)):o}else throw this.unexpected()}}parseTopicReferenceThenEqualsSign(e,t){let s=this.getPluginOption("pipelineOperator","proposal");if(s)return this.state.type=e,this.state.value=t,this.state.pos--,this.state.end--,this.state.endLoc=O(this.state.endLoc,-1),this.parseTopicReference(s);throw this.unexpected()}parseTopicReference(e){let t=this.startNode(),s=this.state.startLoc,i=this.state.type;return this.next(),this.finishTopicReference(t,s,e,i)}finishTopicReference(e,t,s,i){if(this.testTopicReferenceConfiguration(s,t,i))return this.topicReferenceIsAllowedInCurrentContext()||this.raise(c.PipeTopicUnbound,t),this.registerTopicReference(),this.finishNode(e,"TopicReference");throw this.raise(c.PipeTopicUnconfiguredToken,t,{token:W(i)})}testTopicReferenceConfiguration(e,t,s){switch(e){case"hack":return this.hasPlugin(["pipelineOperator",{topicToken:W(s)}]);default:throw this.raise(c.PipeTopicRequiresHackPipes,t)}}parseAsyncArrowUnaryFunction(e){this.prodParam.enter(Ct(!0,this.prodParam.hasYield));let t=[this.parseIdentifier()];return this.prodParam.exit(),this.hasPrecedingLineBreak()&&this.raise(c.LineTerminatorBeforeArrow,this.state.curPosition()),this.expect(15),this.parseArrowExpression(e,t,!0)}parseDo(e,t){this.expectPlugin("doExpressions"),t&&this.expectPlugin("asyncDoExpressions"),e.async=t,this.next();let s=this.state.labels;return this.state.labels=[],t?(this.prodParam.enter(2),e.body=this.parseBlock(),this.prodParam.exit()):e.body=this.parseBlock(),this.state.labels=s,this.finishNode(e,"DoExpression")}parseSuper(){let e=this.startNode();return this.next(),this.match(6)&&!this.scope.allowDirectSuper?this.raise(c.SuperNotAllowed,e):this.scope.allowSuper||this.raise(c.UnexpectedSuper,e),!this.match(6)&&!this.match(0)&&!this.match(12)&&this.raise(c.UnsupportedSuper,e),this.finishNode(e,"Super")}parsePrivateName(){let e=this.startNode(),t=this.startNodeAt(O(this.state.startLoc,1)),s=this.state.value;return this.next(),e.id=this.createIdentifier(t,s),this.finishNode(e,"PrivateName")}parseFunctionOrFunctionSent(){let e=this.startNode();if(this.next(),this.prodParam.hasYield&&this.match(12)){let t=this.createIdentifier(this.startNodeAtNode(e),"function");return this.next(),this.match(99)?this.expectPlugin("functionSent"):this.hasPlugin("functionSent")||this.unexpected(),this.parseMetaProperty(e,t,"sent")}return this.parseFunction(e)}parseMetaProperty(e,t,s){e.meta=t;let i=this.state.containsEsc;return e.property=this.parseIdentifier(!0),(e.property.name!==s||i)&&this.raise(c.UnsupportedMetaProperty,e.property,{target:t.name,onlyValidPropertyName:s}),this.finishNode(e,"MetaProperty")}parseImportMetaPropertyOrPhaseCall(e){if(this.next(),this.isContextual(101)||this.isContextual(93)){let t=this.isContextual(101);return this.expectPlugin(t?"sourcePhaseImports":"deferredImportEvaluation"),this.next(),e.phase=t?"source":"defer",this.parseImportCall(e)}else{let t=this.createIdentifierAt(this.startNodeAtNode(e),"import",this.state.lastTokStartLoc);return this.isContextual(97)&&(this.inModule||this.raise(c.ImportMetaOutsideModule,t),this.sawUnambiguousESM=!0),this.parseMetaProperty(e,t,"meta")}}parseLiteralAtNode(e,t,s){return this.addExtra(s,"rawValue",e),this.addExtra(s,"raw",this.input.slice(this.offsetToSourcePos(s.start),this.state.end)),s.value=e,this.next(),this.finishNode(s,t)}parseLiteral(e,t){let s=this.startNode();return this.parseLiteralAtNode(e,t,s)}parseStringLiteral(e){return this.parseLiteral(e,"StringLiteral")}parseNumericLiteral(e){return this.parseLiteral(e,"NumericLiteral")}parseBigIntLiteral(e){let t;try{t=BigInt(e)}catch{t=null}return this.parseLiteral(t,"BigIntLiteral")}parseRegExpLiteral(e){let t=this.startNode();return this.addExtra(t,"raw",this.input.slice(this.offsetToSourcePos(t.start),this.state.end)),t.pattern=e.pattern,t.flags=e.flags,this.next(),this.finishNode(t,"RegExpLiteral")}parseBooleanLiteral(e){let t=this.startNode();return t.value=e,this.next(),this.finishNode(t,"BooleanLiteral")}parseNullLiteral(){let e=this.startNode();return this.next(),this.finishNode(e,"NullLiteral")}parseParenAndDistinguishExpression(e){let t=this.state.startLoc,s;this.next(),this.expressionScope.enter(Ui());let i=this.state.startLoc,r=[],n=new it,o=!0,h,l;for(;!this.match(7);){if(o)o=!1;else if(this.expect(8,n.optionalParametersLoc===null?null:n.optionalParametersLoc),this.match(7)){l=this.state.startLoc;break}if(this.match(17)){let f=this.state.startLoc;if(h=this.state.startLoc,r.push(this.parseParenItem(this.parseRestBinding(),f)),!this.checkCommaAfterRest(41))break}else r.push(this.parseMaybeAssignAllowInOrVoidPattern(7,n,this.parseParenItem))}let p=this.state.lastTokEndLoc;this.expect(7);let u=this.startNodeAt(t);return e&&this.shouldParseArrow(r)&&(u=this.parseArrow(u))?(this.checkDestructuringPrivate(n),this.expressionScope.validateAsPattern(),this.expressionScope.exit(),this.parseArrowExpression(u,r,!1),u):(this.expressionScope.exit(),r.length||this.unexpected(this.state.lastTokStartLoc),l&&this.unexpected(l),h&&this.unexpected(h),this.checkExpressionErrors(n,!0),this.toReferencedList(r,!0),r.length>1?(s=this.startNodeAt(i),s.expressions=r,this.finishNode(s,"SequenceExpression"),this.resetEndLocation(s,p)):s=r[0],this.wrapParenthesis(t,s))}wrapParenthesis(e,t){if(!(this.optionFlags&2048))return this.addExtra(t,"parenthesized",!0),this.addExtra(t,"parenStart",e.index),this.takeSurroundingComments(t,e.index,this.state.lastTokEndLoc.index),t;let s=this.startNodeAt(e);return s.expression=t,this.finishNode(s,"ParenthesizedExpression")}shouldParseArrow(e){return!this.canInsertSemicolon()}parseArrow(e){if(this.eat(15))return e}parseParenItem(e,t){return e}parseNewOrNewTarget(){let e=this.startNode();if(this.next(),this.match(12)){let t=this.createIdentifier(this.startNodeAtNode(e),"new");this.next();let s=this.parseMetaProperty(e,t,"target");return this.scope.allowNewTarget||this.raise(c.UnexpectedNewTarget,s),s}return this.parseNew(e)}parseNew(e){if(this.parseNewCallee(e),this.eat(6)){let t=this.parseExprList(7);this.toReferencedList(t),e.arguments=t}else e.arguments=[];return this.finishNode(e,"NewExpression")}parseNewCallee(e){let t=this.match(79),s=this.parseNoCallExpr();e.callee=s,t&&s.type==="ImportExpression"&&this.raise(c.ImportCallNotNewExpression,s,s),s.type==="Import"&&this.raise(c.ImportCallNotNewExpression,s),s.type==="Super"&&this.raise(c.SuperCallNotNewExpression,s)}parseTemplateElement(e){let{start:t,startLoc:s,end:i,value:r}=this.state,n=t+1,o=this.startNodeAt(O(s,1));r===null&&(e||this.raise(c.InvalidEscapeSequenceTemplate,O(this.state.firstInvalidTemplateEscapePos,1)));let h=this.match(20),l=h?-1:-2,p=i+l;o.value={raw:this.input.slice(n,p).replace(/\r\n?/g,`
|
|
10
|
+
`),cooked:r===null?null:r.slice(1,l)},o.tail=h,this.next();let u=this.finishNode(o,"TemplateElement");return this.resetEndLocation(u,O(this.state.lastTokEndLoc,l)),u}parseTemplate(e){let t=this.startNode(),s=this.parseTemplateElement(e),i=[s],r=[];for(;!s.tail;)r.push(this.parseTemplateSubstitution()),this.readTemplateContinuation(),i.push(s=this.parseTemplateElement(e));return t.expressions=r,t.quasis=i,this.finishNode(t,"TemplateLiteral")}parseTemplateSubstitution(){return this.parseExpression()}parseObjectLike(e,t,s){let i=!1,r=!0,n=this.startNode();for(n.properties=[],this.next();!this.match(e);){if(r)r=!1;else if(this.expect(8),this.match(e)){this.addTrailingCommaExtraToNode(n);break}let h;t?h=this.parseBindingProperty():(h=this.parsePropertyDefinition(s),i=this.checkProto(h,i,s)),n.properties.push(h)}this.next();let o=t?"ObjectPattern":"ObjectExpression";return this.finishNode(n,o)}addTrailingCommaExtraToNode(e){this.addExtra(e,"trailingComma",this.state.lastTokStartLoc.index),this.addExtra(e,"trailingCommaLoc",this.state.lastTokStartLoc,!1)}maybeAsyncOrAccessorProp(e){return!e.computed&&e.key.type==="Identifier"&&(this.isLiteralPropertyName()||this.match(0)||this.match(51))}parsePropertyDefinition(e){let t=[];if(this.match(22))for(this.hasPlugin("decorators")&&this.raise(c.UnsupportedPropertyDecorator,this.state.startLoc);this.match(22);)t.push(this.parseDecorator());let s=this.startNode(),i=!1,r=!1,n;if(this.match(17))return t.length&&this.unexpected(),this.parseSpread();t.length&&(s.decorators=t),s.method=!1,e&&(n=this.state.startLoc);let o=this.eat(51);this.parsePropertyNamePrefixOperator(s);let h=this.state.containsEsc;if(this.parsePropertyName(s,e),!o&&!h&&this.maybeAsyncOrAccessorProp(s)){let{key:l}=s,p=l.name;p==="async"&&!this.hasPrecedingLineBreak()&&(i=!0,this.resetPreviousNodeTrailingComments(l),o=this.eat(51),this.parsePropertyName(s)),(p==="get"||p==="set")&&(r=!0,this.resetPreviousNodeTrailingComments(l),s.kind=p,this.match(51)&&(o=!0,this.raise(c.AccessorIsGenerator,this.state.curPosition(),{kind:p}),this.next()),this.parsePropertyName(s))}return this.parseObjPropValue(s,n,o,i,!1,r,e)}getGetterSetterExpectedParamCount(e){return e.kind==="get"?0:1}getObjectOrClassMethodParams(e){return e.params}checkGetterSetterParams(e){let t=this.getGetterSetterExpectedParamCount(e),s=this.getObjectOrClassMethodParams(e);s.length!==t&&this.raise(e.kind==="get"?c.BadGetterArity:c.BadSetterArity,e),e.kind==="set"&&s[s.length-1]?.type==="RestElement"&&this.raise(c.BadSetterRestParameter,e)}parseObjectMethod(e,t,s,i,r){if(r){let n=this.parseMethod(e,t,!1,!1,!1,"ObjectMethod");return this.checkGetterSetterParams(n),n}if(s||t||this.match(6))return i&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,t,s,!1,!1,"ObjectMethod")}parseObjectProperty(e,t,s,i){if(e.shorthand=!1,this.eat(10))return e.value=s?this.parseMaybeDefault(this.state.startLoc):this.parseMaybeAssignAllowInOrVoidPattern(4,i),this.finishObjectProperty(e);if(!e.computed&&e.key.type==="Identifier"){if(this.checkReservedWord(e.key.name,e.key.start,!0,!1),s)e.value=this.parseMaybeDefault(t,this.cloneIdentifier(e.key));else if(this.match(25)){let r=this.state.startLoc;i!=null?i.shorthandAssignLoc===null&&(i.shorthandAssignLoc=r):this.raise(c.InvalidCoverInitializedName,r),e.value=this.parseMaybeDefault(t,this.cloneIdentifier(e.key))}else e.value=this.cloneIdentifier(e.key);return e.shorthand=!0,this.finishObjectProperty(e)}}finishObjectProperty(e){return this.finishNode(e,"ObjectProperty")}parseObjPropValue(e,t,s,i,r,n,o){let h=this.parseObjectMethod(e,s,i,r,n)||this.parseObjectProperty(e,t,r,o);return h||this.unexpected(),h}parsePropertyName(e,t){if(this.eat(0))e.computed=!0,e.key=this.parseMaybeAssignAllowIn(),this.expect(1);else{let{type:s,value:i}=this.state,r;if(U(s))r=this.parseIdentifier(!0);else switch(s){case 131:r=this.parseNumericLiteral(i);break;case 130:r=this.parseStringLiteral(i);break;case 132:r=this.parseBigIntLiteral(i);break;case 134:{let n=this.state.startLoc;t!=null?t.privateKeyLoc===null&&(t.privateKeyLoc=n):this.raise(c.UnexpectedPrivateField,n),r=this.parsePrivateName();break}default:this.unexpected()}e.key=r,s!==134&&(e.computed=!1)}}initFunction(e,t){e.id=null,e.generator=!1,e.async=t}parseMethod(e,t,s,i,r,n,o=!1){this.initFunction(e,s),e.generator=t,this.scope.enter(530|(o?576:0)|(r?32:0)),this.prodParam.enter(Ct(s,e.generator)),this.parseFunctionParams(e,i);let h=this.parseFunctionBodyAndFinish(e,n,!0);return this.prodParam.exit(),this.scope.exit(),h}parseArrayLike(e,t){let s=this.startNode();return this.next(),s.elements=this.parseExprList(e,!0,t,s),this.finishNode(s,"ArrayExpression")}parseArrowExpression(e,t,s,i){this.scope.enter(518);let r=Ct(s,!1);return this.match(2)||(r|=this.prodParam.currentFlags()&24),this.prodParam.enter(r),this.initFunction(e,s),t&&this.setArrowFunctionParameters(e,t,i),this.parseFunctionBody(e,!0),this.prodParam.exit(),this.scope.exit(),this.finishNode(e,"ArrowFunctionExpression")}setArrowFunctionParameters(e,t,s){this.toAssignableList(t,s,!1),e.params=t}parseFunctionBodyAndFinish(e,t,s=!1){return this.parseFunctionBody(e,!1,s),this.finishNode(e,t)}parseFunctionBody(e,t,s=!1){let i=t&&!this.match(2);if(this.expressionScope.enter(cs()),i)e.body=this.parseMaybeAssign(),this.checkParams(e,!1,t,!1);else{let r=this.state.strict,n=this.state.labels;this.state.labels=[],this.prodParam.enter(this.prodParam.currentFlags()|4),e.body=this.parseBlock(!0,!1,o=>{let h=!this.isSimpleParamList(e.params);o&&h&&this.raise(c.IllegalLanguageModeDirective,(e.kind==="method"||e.kind==="constructor")&&e.key?this.optionFlags&256?e.key.loc.end:e.key:e);let l=!r&&this.state.strict;this.checkParams(e,!this.state.strict&&!t&&!s&&!h,t,l),this.state.strict&&e.id&&this.checkIdentifier(e.id,65,l)}),this.prodParam.exit(),this.state.labels=n}this.expressionScope.exit()}isSimpleParameter(e){return e.type==="Identifier"}isSimpleParamList(e){for(let t=0,s=e.length;t<s;t++)if(!this.isSimpleParameter(e[t]))return!1;return!0}checkParams(e,t,s,i=!0){let r=!t&&new Set,n={type:"FormalParameters"};for(let o of e.params)this.checkLVal(o,n,5,r,i)}parseExprList(e,t,s,i){let r=[],n=!0;for(;!this.eat(e);){if(n)n=!1;else if(this.expect(8),this.match(e)){i&&this.addTrailingCommaExtraToNode(i),this.next();break}r.push(this.parseExprListItem(e,t,s))}return r}parseExprListItem(e,t,s,i){let r;if(this.match(8))t||this.raise(c.UnexpectedToken,this.state.curPosition(),{unexpected:","}),r=null;else if(this.match(17)){let n=this.state.startLoc;r=this.parseParenItem(this.parseSpread(s),n)}else if(this.match(13)){this.expectPlugin("partialApplication"),i||this.raise(c.UnexpectedArgumentPlaceholder,this.state.startLoc);let n=this.startNode();this.next(),r=this.finishNode(n,"ArgumentPlaceholder")}else r=this.parseMaybeAssignAllowInOrVoidPattern(e,s,this.parseParenItem);return r}parseIdentifier(e){let t=this.startNode(),s=this.parseIdentifierName(e);return this.createIdentifier(t,s)}createIdentifier(e,t){return e.name=t,this.optionFlags&256&&(e.loc.identifierName=t),this.finishNode(e,"Identifier")}createIdentifierAt(e,t,s){return e.name=t,this.optionFlags&256&&(e.loc.identifierName=t),this.finishNodeAt(e,"Identifier",s)}parseIdentifierName(e){let t,{start:s,type:i}=this.state;U(i)?t=this.state.value:this.unexpected();let r=ii(i);return e?r&&this.replaceToken(128):this.checkReservedWord(t,this.sourceToOffsetPos(s),r,!1),this.next(),t}checkReservedWord(e,t,s,i){if(e.length>10||!Pi(e))return;if(s&&yi(e)){this.raise(c.UnexpectedKeyword,t,{keyword:e});return}if((this.state.strict?i?ns:rs:is)(e,this.inModule)){this.raise(c.UnexpectedReservedWord,t,{reservedWord:e});return}else if(e==="yield"){if(this.prodParam.hasYield){this.raise(c.YieldBindingIdentifier,t);return}}else if(e==="await"){if(this.prodParam.hasAwait){this.raise(c.AwaitBindingIdentifier,t);return}if(this.scope.inStaticBlock){this.raise(c.AwaitBindingIdentifierInStaticBlock,t);return}this.expressionScope.recordAsyncArrowParametersError(t)}else if(e==="arguments"&&this.scope.inClassAndNotInNonArrowFunction){this.raise(c.ArgumentsInClass,t);return}}recordAwaitIfAllowed(){let e=this.prodParam.hasAwait;return e&&!this.scope.inFunction&&(this.state.hasTopLevelAwait=!0),e}parseAwait(e,t){let s=e.index;this.setLoc(e);let i=this.startNodeAt(e);return this.expressionScope.recordParameterInitializerError(c.AwaitExpressionFormalParameter,s),this.eat(51)&&this.raise(c.ObsoleteAwaitStar,e),!this.scope.inFunction&&!(this.optionFlags&1)&&(this.isAmbiguousPrefixOrIdentifier()?this.ambiguousScriptDifferentAst=!0:this.sawUnambiguousESM=!0),t||(i.argument=this.parseMaybeUnary(null,!0)),this.finishNode(i,"AwaitExpression")}isAmbiguousPrefixOrIdentifier(){if(this.hasPrecedingLineBreak())return!0;let{type:e}=this.state;return e===49||e===6||e===0||$t(e)||e===98&&!this.state.containsEsc||e===133||e===52||this.hasPlugin("v8intrinsic")&&e===50}parseYield(e){this.setLoc(e);let t=this.startNodeAt(e);this.expressionScope.recordParameterInitializerError(c.YieldInParameter,e.index);let s=!1,i=null;if(!this.hasPrecedingLineBreak())switch(s=this.eat(51),this.state.type){case 9:case 135:case 4:case 7:case 1:case 5:case 10:case 8:if(!s)break;default:i=this.parseMaybeAssign()}return t.delegate=s,t.argument=i,this.finishNode(t,"YieldExpression")}parseImportCall(e){this.next();let t=this.parseCallExpressionArguments();if(t.length===0||t.length>2)this.raise(c.ImportCallArity,e,e);else for(let s of t)s.type==="SpreadElement"&&this.raise(c.ImportCallSpreadArgument,s,e);return e.source=t[0],e.options=t[1]??null,this.finishNode(e,"ImportExpression")}withTopicBindingContext(e){let t=this.state.inHackPipelineBody;this.state.inHackPipelineBody=!0;let s=this.state.seenTopicReference;this.state.seenTopicReference=!1;try{return e()}finally{this.state.inHackPipelineBody=t,this.state.seenTopicReference=s}}allowInAnd(e){let t=this.prodParam.currentFlags();if(24&~t){this.prodParam.enter(t|8|16);try{return e()}finally{this.prodParam.exit()}}return e()}disallowInAnd(e){let t=this.prodParam.currentFlags(),s=8&t,i=16&~t;if(s||i){this.prodParam.enter(t&-9|16);try{return e()}finally{this.prodParam.exit()}}return e()}registerTopicReference(){this.state.seenTopicReference=!0}topicReferenceIsAllowedInCurrentContext(){return this.state.inHackPipelineBody}topicReferenceWasUsedInCurrentContext(){return this.state.seenTopicReference}parseFSharpPipelineBody(e){let t=this.state.startLoc;this.prodParam.enter(this.prodParam.currentFlags()&-17);let s;if(this.isContextual(92)&&this.recordAwaitIfAllowed()){this.next(),s=this.parseAwait(t,!0);let i=this.state.type;_e(i)&&i!==35&&(this.prodParam.hasIn||i!==54)&&this.raise(c.PipelineUnparenthesized,t)}else this.state.canStartArrow=!0,s=this.parseExprOp(this.parseMaybeUnaryOrPrivate(),t,e);return this.prodParam.exit(),s}parseModuleExpression(){this.expectPlugin("moduleBlocks");let e=this.startNode();this.next(),this.match(2)||this.unexpected(null,2);let t=this.startNodeAt(this.state.endLoc);this.next();let s=this.initializeScopes(!0);this.enterInitialScopes();try{e.body=this.parseProgram(t,4,"module")}finally{s()}return this.finishNode(e,"ModuleExpression")}parseVoidPattern(e){this.expectPlugin("discardBinding");let t=this.startNode();return e!=null&&(e.voidPatternLoc=this.state.startLoc),this.next(),this.finishNode(t,"VoidPattern")}parseMaybeAssignAllowInOrVoidPattern(e,t,s){if(t!=null&&this.match(84)){let i=this.lookaheadCharCode();if(i===44||i===(e===1?93:e===4?125:41)||i===61)return this.parseMaybeDefault(this.state.startLoc,this.parseVoidPattern(t))}return this.parseMaybeAssignAllowIn(t,s)}parsePropertyNamePrefixOperator(e){}},Ut={kind:1},_i={kind:2},$i=/[\uD800-\uDFFF]/u,jt=/in(?:stanceof)?/y;function ps(a){for(let e=0;e<a.length;e++){let t=a[e],{type:s}=t;typeof s=="number"&&(t.type=es(s))}return a}var he=class extends oe{parseTopLevel(e,t){return e.program=this.parseProgram(t,135,this.options.sourceType==="module"?"module":"script"),e.comments=this.comments,this.optionFlags&512&&(e.tokens=ps(this.tokens)),this.finishNode(e,"File")}parseProgram(e,t,s){if(e.sourceType=s,e.interpreter=this.parseInterpreterDirective(),this.parseBlockBody(e,!0,!0,t),this.inModule){if(!(this.optionFlags&64)&&this.scope.undefinedExports.size>0)for(let[r,n]of Array.from(this.scope.undefinedExports))this.raise(c.ModuleExportUndefined,n,{localName:r});this.addExtra(e,"topLevelAwait",this.state.hasTopLevelAwait)}let i;return t===135?i=this.finishNode(e,"Program"):i=this.finishNodeAt(e,"Program",O(this.state.startLoc,-1)),i}stmtToDirective(e){let t=this.castNodeTo(e,"Directive"),s=this.castNodeTo(e.expression,"DirectiveLiteral"),i=s.value,r=this.input.slice(this.offsetToSourcePos(s.start),this.offsetToSourcePos(s.end)),n=s.value=r.slice(1,-1);return this.addExtra(s,"raw",r),this.addExtra(s,"rawValue",n),this.addExtra(s,"expressionValue",i),t.value=s,delete e.expression,t}parseInterpreterDirective(){if(!this.match(24))return null;let e=this.startNode();return e.value=this.state.value,this.next(),this.finishNode(e,"InterpreterDirective")}isLet(){return this.isContextual(96)?this.hasFollowingBindingAtom():!1}isUsing(){return this.isContextual(103)?this.nextTokenIsIdentifierOnSameLine():!1}isForUsing(){if(!this.isContextual(103))return!1;let e=this.nextTokenInLineStart(),t=this.codePointAtPos(e);if(this.isUnparsedContextual(e,"of")){let s=this.lookaheadCharCodeSince(e+2);if(s!==61&&s!==58&&s!==59)return!1}return!!(this.chStartsBindingIdentifier(t,e)||this.isUnparsedContextual(e,"void"))}nextTokenIsIdentifierOnSameLine(){let e=this.nextTokenInLineStart(),t=this.codePointAtPos(e);return this.chStartsBindingIdentifier(t,e)}isAwaitUsing(){if(!this.isContextual(92))return!1;let e=this.nextTokenInLineStart();if(this.isUnparsedContextual(e,"using")){e=this.nextTokenInLineStartSince(e+5);let t=this.codePointAtPos(e);if(this.chStartsBindingIdentifier(t,e))return!0}return!1}chStartsBindingIdentifier(e,t){if(_(e)){if(jt.lastIndex=t,jt.test(this.input)){let s=this.codePointAtPos(jt.lastIndex);if(!G(s)&&s!==92)return!1}return!0}else return e===92}chStartsBindingPattern(e){return e===91||e===123}hasFollowingBindingAtom(){let e=this.nextTokenStart(),t=this.codePointAtPos(e);return this.chStartsBindingPattern(t)||this.chStartsBindingIdentifier(t,e)}hasInLineFollowingBindingIdentifierOrBrace(){let e=this.nextTokenInLineStart(),t=this.codePointAtPos(e);return t===123||this.chStartsBindingIdentifier(t,e)}allowsUsing(){return(this.scope.inModule||!this.scope.inTopLevel)&&!this.scope.inBareCaseStatement}parseModuleItem(){return this.parseStatementLike(15)}parseStatementListItem(){return this.parseStatementLike(6|(!this.options.annexB||this.state.strict?0:8))}parseStatementOrSloppyAnnexBFunctionDeclaration(e=!1){let t=0;return this.options.annexB&&!this.state.strict&&(t|=4,e&&(t|=8)),this.parseStatementLike(t)}parseStatement(){return this.parseStatementLike(0)}parseStatementLike(e){let t=null;return this.match(22)&&(t=this.parseDecorators(!0)),this.parseStatementContent(e,t)}parseStatementContent(e,t){let s=this.state.type,i=this.startNode(),r=!!(e&2),n=!!(e&4),o=e&1;switch(s){case 56:return this.parseBreakContinueStatement(i,!0);case 59:return this.parseBreakContinueStatement(i,!1);case 60:return this.parseDebuggerStatement(i);case 86:return this.parseDoWhileStatement(i);case 87:return this.parseForStatement(i);case 64:if(this.lookaheadCharCode()===46)break;return n||this.raise(this.state.strict?c.StrictFunction:this.options.annexB?c.SloppyFunctionAnnexB:c.SloppyFunction,this.state.startLoc),this.parseFunctionStatement(i,!1,!r&&n);case 76:return r||this.unexpected(),this.parseClass(this.maybeTakeDecorators(t,i),!0);case 65:return this.parseIfStatement(i);case 66:return this.parseReturnStatement(i);case 67:return this.parseSwitchStatement(i);case 68:return this.parseThrowStatement(i);case 69:return this.parseTryStatement(i);case 92:if(this.isAwaitUsing())return this.allowsUsing()?r?this.recordAwaitIfAllowed()||this.raise(c.AwaitUsingNotInAsyncContext,i):this.raise(c.UnexpectedLexicalDeclaration,i):this.raise(c.UnexpectedUsingDeclaration,i),this.next(),this.parseVarStatement(i,"await using");break;case 103:if(this.state.containsEsc||!this.hasInLineFollowingBindingIdentifierOrBrace())break;return this.allowsUsing()?r||this.raise(c.UnexpectedLexicalDeclaration,this.state.startLoc):this.raise(c.UnexpectedUsingDeclaration,this.state.startLoc),this.parseVarStatement(i,"using");case 96:{if(this.state.containsEsc)break;let p=this.nextTokenStart(),u=this.codePointAtPos(p);if(u!==91&&(!r&&this.hasFollowingLineBreak()||!this.chStartsBindingIdentifier(u,p)&&u!==123))break}case 71:r||this.raise(c.UnexpectedLexicalDeclaration,this.state.startLoc);case 70:{let p=this.state.value;return this.parseVarStatement(i,p)}case 88:return this.parseWhileStatement(i);case 72:return this.parseWithStatement(i);case 2:return this.parseBlock();case 9:return this.parseEmptyStatement(i);case 79:{let p=this.lookaheadCharCode();if(p===40||p===46)break}case 78:{!(this.optionFlags&8)&&!o&&this.raise(c.UnexpectedImportExport,this.state.startLoc),this.next();let p;return s===79?p=this.parseImport(i):p=this.parseExport(i,t),this.assertModuleNodeAllowed(p),p}default:if(this.isAsyncFunction())return r||this.raise(c.AsyncFunctionInSingleStatementContext,this.state.startLoc),this.next(),this.parseFunctionStatement(i,!0,!r&&n)}let h=this.state.value,l=this.parseExpression();return C(s)&&l.type==="Identifier"&&this.eat(10)?this.parseLabeledStatement(i,h,l,e):this.parseExpressionStatement(i,l,t)}assertModuleNodeAllowed(e){!(this.optionFlags&8)&&!this.inModule&&this.raise(c.ImportOutsideModule,e)}maybeTakeDecorators(e,t,s){return e&&(t.decorators?.length?(this.raise(c.DecoratorsBeforeAfterExport,t.decorators[0]),t.decorators.unshift(...e)):t.decorators=e,this.resetStartLocationFromNode(t,e[0]),s&&this.resetStartLocationFromNode(s,t)),t}canHaveLeadingDecorator(){return this.match(76)}parseDecorators(e){let t=[];do t.push(this.parseDecorator());while(this.match(22));if(this.match(78))e||this.unexpected();else if(!this.canHaveLeadingDecorator())throw this.raise(c.UnexpectedLeadingDecorator,this.state.startLoc);return t}parseDecorator(){this.expectOnePlugin(["decorators","decorators-legacy"]);let e=this.startNode();if(this.next(),this.hasPlugin("decorators")){let t=this.state.startLoc,s;if(this.match(6)){let i=this.state.startLoc;this.next(),s=this.parseExpression(),this.expect(7),s=this.wrapParenthesis(i,s);let r=this.state.startLoc;e.expression=this.parseMaybeDecoratorArguments(s,i),e.expression!==s&&this.raise(c.DecoratorArgumentsOutsideParentheses,r)}else{for(s=this.parseIdentifier(!1);this.eat(12);){let i=this.startNodeAt(t);i.object=s,this.match(134)?(this.classScope.usePrivateName(this.state.value,this.state.startLoc),i.property=this.parsePrivateName()):i.property=this.parseIdentifier(!0),i.computed=!1,s=this.finishNode(i,"MemberExpression")}e.expression=this.parseMaybeDecoratorArguments(s,t)}}else this.state.canStartArrow=!1,e.expression=this.parseExprSubscripts();return this.finishNode(e,"Decorator")}parseMaybeDecoratorArguments(e,t){if(this.eat(6)){let s=this.startNodeAt(t);return s.callee=e,s.arguments=this.parseCallExpressionArguments(),this.toReferencedList(s.arguments),this.finishNode(s,"CallExpression")}return e}parseBreakContinueStatement(e,t){return this.next(),this.isLineTerminator()?e.label=null:(e.label=this.parseIdentifier(),this.semicolon()),this.verifyBreakContinue(e,t),this.finishNode(e,t?"BreakStatement":"ContinueStatement")}verifyBreakContinue(e,t){let s;for(s=0;s<this.state.labels.length;++s){let i=this.state.labels[s];if((e.label==null||i.name===e.label.name)&&(i.kind!=null&&(t||i.kind===1)||e.label&&t))break}if(s===this.state.labels.length){let i=t?"BreakStatement":"ContinueStatement";this.raise(c.IllegalBreakContinue,e,{type:i})}}parseDebuggerStatement(e){return this.next(),this.semicolon(),this.finishNode(e,"DebuggerStatement")}parseHeaderExpression(){this.expect(6);let e=this.parseExpression();return this.expect(7),e}parseDoWhileStatement(e){return this.next(),this.state.labels.push(Ut),e.body=this.parseStatement(),this.state.labels.pop(),this.expect(88),e.test=this.parseHeaderExpression(),this.eat(9),this.finishNode(e,"DoWhileStatement")}parseForStatement(e){this.next(),this.state.labels.push(Ut);let t=null;if(this.isContextual(92)&&this.recordAwaitIfAllowed()&&(t=this.state.startLoc,this.next()),this.scope.enter(0),this.expect(6),this.match(9))return t!==null&&this.unexpected(t),this.parseFor(e,null);let s=this.isContextual(96);{let h=this.isAwaitUsing(),l=h||this.isForUsing(),p=s&&this.hasFollowingBindingAtom()||l;if(this.match(70)||this.match(71)||p){let u=this.startNode(),f;h?(f="await using",this.recordAwaitIfAllowed()||this.raise(c.AwaitUsingNotInAsyncContext,this.state.startLoc),this.next()):f=this.state.value,this.next(),this.parseVar(u,!0,f);let m=this.finishNode(u,"VariableDeclaration"),P=this.match(54);return P&&l&&this.raise(c.ForInUsing,m),(P||this.isContextual(98))&&m.declarations.length===1?this.parseForIn(e,m,t):(t!==null&&this.unexpected(t),this.parseFor(e,m))}}let i=this.isContextual(91),r=new it,n=this.parseExpression(!0,r),o=this.isContextual(98);if(o&&(s&&this.raise(c.ForOfLet,n),t===null&&i&&n.type==="Identifier"&&this.raise(c.ForOfAsync,n)),o||this.match(54)){this.checkDestructuringPrivate(r),this.toAssignable(n,!0);let h=o?"ForOfStatement":"ForInStatement";return this.checkLVal(n,{type:h}),this.parseForIn(e,n,t)}else this.checkExpressionErrors(r,!0);return t!==null&&this.unexpected(t),this.parseFor(e,n)}parseFunctionStatement(e,t,s){return this.next(),this.parseFunction(e,1|(s?2:0)|(t?8:0))}parseIfStatement(e){return this.next(),e.test=this.parseHeaderExpression(),e.consequent=this.parseStatementOrSloppyAnnexBFunctionDeclaration(),e.alternate=this.eat(62)?this.parseStatementOrSloppyAnnexBFunctionDeclaration():null,this.finishNode(e,"IfStatement")}parseReturnStatement(e){return this.prodParam.hasReturn||this.raise(c.IllegalReturn,this.state.startLoc),this.next(),this.isLineTerminator()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")}parseSwitchStatement(e){this.next(),e.discriminant=this.parseHeaderExpression();let t=e.cases=[];this.expect(2),this.state.labels.push(_i),this.scope.enter(256);let s;for(let i;!this.match(4);)if(this.match(57)||this.match(61)){let r=this.match(57);s&&this.finishNode(s,"SwitchCase"),t.push(s=this.startNode()),s.consequent=[],this.next(),r?s.test=this.parseExpression():(i&&this.raise(c.MultipleDefaultsInSwitch,this.state.lastTokStartLoc),i=!0,s.test=null),this.expect(10)}else s?s.consequent.push(this.parseStatementListItem()):this.unexpected();return this.scope.exit(),s&&this.finishNode(s,"SwitchCase"),this.next(),this.state.labels.pop(),this.finishNode(e,"SwitchStatement")}parseThrowStatement(e){return this.next(),this.hasPrecedingLineBreak()&&this.raise(c.NewlineAfterThrow,this.state.lastTokEndLoc),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")}parseCatchClauseParam(){let e=this.parseBindingAtom();return this.scope.enter(this.options.annexB&&e.type==="Identifier"?8:0),this.checkLVal(e,{type:"CatchClause"},9),e}parseTryStatement(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.match(58)){let t=this.startNode();this.next(),this.match(6)?(this.expect(6),t.param=this.parseCatchClauseParam(),this.expect(7)):(t.param=null,this.scope.enter(0)),t.body=this.parseBlock(!1,!1),this.scope.exit(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(63)?this.parseBlock():null,!e.handler&&!e.finalizer&&this.raise(c.NoCatchOrFinally,e),this.finishNode(e,"TryStatement")}parseVarStatement(e,t,s=!1){return this.next(),this.parseVar(e,!1,t,s),this.semicolon(),this.finishNode(e,"VariableDeclaration")}parseWhileStatement(e){return this.next(),e.test=this.parseHeaderExpression(),this.state.labels.push(Ut),e.body=this.parseStatement(),this.state.labels.pop(),this.finishNode(e,"WhileStatement")}parseWithStatement(e){return this.state.strict&&this.raise(c.StrictWith,this.state.startLoc),this.next(),e.object=this.parseHeaderExpression(),e.body=this.parseStatement(),this.finishNode(e,"WithStatement")}parseEmptyStatement(e){return this.next(),this.finishNode(e,"EmptyStatement")}parseLabeledStatement(e,t,s,i){for(let n of this.state.labels)n.name===t&&this.raise(c.LabelRedeclaration,s,{labelName:t});let r=ni(this.state.type)?1:this.match(67)?2:null;for(let n=this.state.labels.length-1;n>=0;n--){let o=this.state.labels[n];if(o.statementStart===e.start)o.statementStart=this.sourceToOffsetPos(this.state.start),o.kind=r;else break}return this.state.labels.push({name:t,kind:r,statementStart:this.sourceToOffsetPos(this.state.start)}),e.body=i&8?this.parseStatementOrSloppyAnnexBFunctionDeclaration(!0):this.parseStatement(),this.state.labels.pop(),e.label=s,this.finishNode(e,"LabeledStatement")}parseExpressionStatement(e,t,s){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")}parseBlock(e=!1,t=!0,s){let i=this.startNode();return e&&this.state.strictErrors.clear(),this.expect(2),t&&this.scope.enter(0),this.parseBlockBody(i,e,!1,4,s),t&&this.scope.exit(),this.finishNode(i,"BlockStatement")}isValidDirective(e){return e.type==="ExpressionStatement"&&e.expression.type==="StringLiteral"&&!e.expression.extra.parenthesized}parseBlockBody(e,t,s,i,r){let n=e.body=[],o=e.directives=[];this.parseBlockOrModuleBlockBody(n,t?o:void 0,s,i,r)}parseBlockOrModuleBlockBody(e,t,s,i,r){let n=this.state.strict,o=!1,h=!1;for(;!this.match(i);){let l=s?this.parseModuleItem():this.parseStatementListItem();if(t&&!h){if(this.isValidDirective(l)){let p=this.stmtToDirective(l);t.push(p),!o&&p.value.value==="use strict"&&(o=!0,this.setStrict(!0));continue}h=!0,this.state.strictErrors.clear()}e.push(l)}r?.call(this,o),n||this.setStrict(!1),this.next()}parseFor(e,t){return e.init=t,this.semicolon(!1),e.test=this.match(9)?null:this.parseExpression(),this.semicolon(!1),e.update=this.match(7)?null:this.parseExpression(),this.expect(7),e.body=this.parseStatement(),this.scope.exit(),this.state.labels.pop(),this.finishNode(e,"ForStatement")}parseForIn(e,t,s){let i=this.match(54);return this.next(),i?s!==null&&this.unexpected(s):e.await=s!==null,t.type==="VariableDeclaration"&&t.declarations[0].init!=null&&(!i||!this.options.annexB||this.state.strict||t.kind!=="var"||t.declarations[0].id.type!=="Identifier")&&this.raise(c.ForInOfLoopInitializer,t,{type:i?"ForInStatement":"ForOfStatement"}),t.type==="AssignmentPattern"&&this.raise(c.InvalidLhs,t,{ancestor:{type:"ForStatement"}}),e.left=t,e.right=i?this.parseExpression():this.parseMaybeAssignAllowIn(),this.expect(7),e.body=this.parseStatement(),this.scope.exit(),this.state.labels.pop(),this.finishNode(e,i?"ForInStatement":"ForOfStatement")}parseVar(e,t,s,i=!1){let r=e.declarations=[];for(e.kind=s;;){let n=this.startNode();if(this.parseVarId(n,s),n.init=this.eat(25)?t?this.parseMaybeAssignDisallowIn():this.parseMaybeAssignAllowIn():null,n.init===null&&!i&&(n.id.type!=="Identifier"&&!(t&&(this.match(54)||this.isContextual(98)))?this.raise(c.DeclarationMissingInitializer,this.state.lastTokEndLoc,{kind:"destructuring"}):(s==="const"||s==="using"||s==="await using")&&!(this.match(54)||this.isContextual(98))&&this.raise(c.DeclarationMissingInitializer,this.state.lastTokEndLoc,{kind:s})),r.push(this.finishNode(n,"VariableDeclarator")),!this.eat(8))break}return e}parseVarId(e,t){let s=this.parseBindingAtom();t==="using"||t==="await using"?(s.type==="ArrayPattern"||s.type==="ObjectPattern")&&this.raise(c.UsingDeclarationHasBindingPattern,s):s.type==="VoidPattern"&&this.raise(c.UnexpectedVoidPattern,s),this.checkLVal(s,{type:"VariableDeclarator"},t==="var"?5:8201),e.id=s}parseAsyncFunctionExpression(e){return this.parseFunction(e,8)}parseFunction(e,t=0){let s=t&2,i=!!(t&1),r=i&&!(t&4),n=!!(t&8);return this.initFunction(e,n),this.match(51)&&(s&&this.raise(c.GeneratorInSingleStatementContext,this.state.startLoc),this.next(),e.generator=!0),i&&(e.id=this.parseFunctionId(r)),this.scope.enter(514),this.prodParam.enter(Ct(n,e.generator)),i||(e.id=this.parseFunctionId()),this.parseFunctionParams(e,!1),this.parseFunctionBodyAndFinish(e,i?"FunctionDeclaration":"FunctionExpression"),this.prodParam.exit(),this.scope.exit(),i&&!s&&this.registerFunctionStatementId(e),e}parseFunctionId(e){return e||C(this.state.type)?this.parseIdentifier():null}parseFunctionParams(e,t){this.expect(6),this.expressionScope.enter(Ri()),e.params=this.parseBindingList(7,41,2|(t?4:0)),this.expressionScope.exit()}registerFunctionStatementId(e){e.id&&this.scope.declareName(e.id.name,!this.options.annexB||this.state.strict||e.generator||e.async?this.scope.treatFunctionsAsVar?5:8201:17,e.id.start)}parseClass(e,t,s){this.next();let i=this.state.strict;return this.state.strict=!0,this.parseClassId(e,t,s),this.parseClassSuper(e),e.body=this.parseClassBody(!!e.superClass,i),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")}isClassProperty(){return this.match(25)||this.match(9)||this.match(4)}isClassMethod(){return this.match(6)}nameIsConstructor(e){return e.type==="Identifier"&&e.name==="constructor"||e.type==="StringLiteral"&&e.value==="constructor"}isNonstaticConstructor(e){return!e.computed&&!e.static&&this.nameIsConstructor(e.key)}parseClassBody(e,t){this.classScope.enter();let s={hadConstructor:!1,hadSuperClass:e},i=[],r=this.startNode();for(r.body=[],this.expect(2);!this.match(4);){if(this.eat(9)){if(i.length>0)throw this.raise(c.DecoratorSemicolon,this.state.lastTokEndLoc);continue}if(this.match(22)){i.push(this.parseDecorator());continue}let n=this.startNode();i.length&&(n.decorators=i,this.resetStartLocationFromNode(n,i[0]),i=[]),this.parseClassMember(r,n,s)}if(this.state.strict=t,this.next(),i.length)throw this.raise(c.TrailingDecorator,this.state.startLoc);return this.classScope.exit(),this.finishNode(r,"ClassBody")}parseClassMemberFromModifier(e,t){let s=this.parseIdentifier(!0);if(this.isClassMethod()){let i=t;return i.kind="method",i.computed=!1,i.key=s,i.static=!1,this.pushClassMethod(e,i,!1,!1,!1,!1),!0}else if(this.isClassProperty()){let i=t;return i.computed=!1,i.key=s,i.static=!1,e.body.push(this.parseClassProperty(i)),!0}return this.resetPreviousNodeTrailingComments(s),!1}parseClassMember(e,t,s){let i=this.isContextual(102);if(i){if(this.parseClassMemberFromModifier(e,t))return;if(this.eat(2)){this.parseClassStaticBlock(e,t);return}}this.parseClassMemberWithIsStatic(e,t,s,i)}parseClassMemberWithIsStatic(e,t,s,i){let r=t,n=t,o=t,h=t,l=t,p=r,u=r;if(t.static=i,this.parsePropertyNamePrefixOperator(t),this.eat(51)){p.kind="method";let I=this.match(134);if(this.parseClassElementName(p),this.parsePostMemberNameModifiers(p),I){this.pushClassPrivateMethod(e,n,!0,!1);return}this.isNonstaticConstructor(r)&&this.raise(c.ConstructorIsGenerator,r.key),this.pushClassMethod(e,r,!0,!1,!1,!1);return}let f=!this.state.containsEsc&&C(this.state.type),m=this.parseClassElementName(t),P=f?m.name:null,N=this.isPrivateName(m),k=this.state.startLoc;if(this.parsePostMemberNameModifiers(u),this.isClassMethod()){if(p.kind="method",N){this.pushClassPrivateMethod(e,n,!1,!1);return}let I=this.isNonstaticConstructor(r),w=!1;I&&(r.kind="constructor",r.decorators&&r.decorators.length>0&&this.raise(c.DecoratorConstructor,t),s.hadConstructor&&!this.hasPlugin("typescript")&&this.raise(c.DuplicateConstructor,m),I&&this.hasPlugin("typescript")&&t.override&&this.raise(c.OverrideOnConstructor,m),s.hadConstructor=!0,w=s.hadSuperClass),this.pushClassMethod(e,r,!1,!1,I,w)}else if(this.isClassProperty())N?this.pushClassPrivateProperty(e,h):this.pushClassProperty(e,o);else if(P==="async"&&!this.isLineTerminator()){this.resetPreviousNodeTrailingComments(m);let I=this.eat(51);u.optional&&this.unexpected(k),p.kind="method";let w=this.match(134);this.parseClassElementName(p),this.parsePostMemberNameModifiers(u),w?this.pushClassPrivateMethod(e,n,I,!0):(this.isNonstaticConstructor(r)&&this.raise(c.ConstructorIsAsync,r.key),this.pushClassMethod(e,r,I,!0,!1,!1))}else if((P==="get"||P==="set")&&!(this.match(51)&&this.isLineTerminator())){this.resetPreviousNodeTrailingComments(m),p.kind=P;let I=this.match(134);this.parseClassElementName(r),I?this.pushClassPrivateMethod(e,n,!1,!1):(this.isNonstaticConstructor(r)&&this.raise(c.ConstructorIsAccessor,r.key),this.pushClassMethod(e,r,!1,!1,!1,!1)),this.checkGetterSetterParams(r)}else if(P==="accessor"&&!this.isLineTerminator()){this.expectPlugin("decoratorAutoAccessors"),this.resetPreviousNodeTrailingComments(m);let I=this.match(134);this.parseClassElementName(o),this.pushClassAccessorProperty(e,l,I)}else this.isLineTerminator()?N?this.pushClassPrivateProperty(e,h):this.pushClassProperty(e,o):this.unexpected()}parseClassElementName(e){let{type:t,value:s}=this.state;if((t===128||t===130)&&e.static&&s==="prototype"&&this.raise(c.StaticPrototype,this.state.startLoc),t===134){s==="constructor"&&this.raise(c.ConstructorClassPrivateField,this.state.startLoc);let i=this.parsePrivateName();return e.key=i,i}return this.parsePropertyName(e),e.key}parseClassStaticBlock(e,t){this.scope.enter(720);let s=this.state.labels;this.state.labels=[],this.prodParam.enter(0);let i=t.body=[];this.parseBlockOrModuleBlockBody(i,void 0,!1,4),this.prodParam.exit(),this.scope.exit(),this.state.labels=s,e.body.push(this.finishNode(t,"StaticBlock")),t.decorators?.length&&this.raise(c.DecoratorStaticBlock,t)}pushClassProperty(e,t){!t.computed&&this.nameIsConstructor(t.key)&&this.raise(c.ConstructorClassField,t.key),e.body.push(this.parseClassProperty(t))}pushClassPrivateProperty(e,t){let s=this.parseClassPrivateProperty(t);e.body.push(s),this.classScope.declarePrivateName(this.getPrivateNameSV(s.key),0,s.key.start)}pushClassAccessorProperty(e,t,s){!s&&!t.computed&&this.nameIsConstructor(t.key)&&this.raise(c.ConstructorClassField,t.key);let i=this.parseClassAccessorProperty(t);e.body.push(i),s&&this.classScope.declarePrivateName(this.getPrivateNameSV(i.key),0,i.key.start)}pushClassMethod(e,t,s,i,r,n){e.body.push(this.parseMethod(t,s,i,r,n,"ClassMethod",!0))}pushClassPrivateMethod(e,t,s,i){let r=this.parseMethod(t,s,i,!1,!1,"ClassPrivateMethod",!0);e.body.push(r);let n=r.kind==="get"?r.static?6:2:r.kind==="set"?r.static?5:1:0;this.declareClassPrivateMethodInScope(r,n)}declareClassPrivateMethodInScope(e,t){this.classScope.declarePrivateName(this.getPrivateNameSV(e.key),t,e.key.start)}parsePostMemberNameModifiers(e){}parseClassPrivateProperty(e){return this.parseInitializer(e),this.semicolon(),this.finishNode(e,"ClassPrivateProperty")}parseClassProperty(e){return this.parseInitializer(e),this.semicolon(),this.finishNode(e,"ClassProperty")}parseClassAccessorProperty(e){return this.parseInitializer(e),this.semicolon(),this.finishNode(e,"ClassAccessorProperty")}parseInitializer(e){this.scope.enter(592),this.expressionScope.enter(cs()),this.prodParam.enter(0),e.value=this.eat(25)?this.parseMaybeAssignAllowIn():null,this.expressionScope.exit(),this.prodParam.exit(),this.scope.exit()}parseClassId(e,t,s,i=8331){if(C(this.state.type))e.id=this.parseIdentifier(),t&&this.declareNameFromIdentifier(e.id,i);else if(s||!t)e.id=null;else throw this.raise(c.MissingClassName,this.state.startLoc)}parseClassSuper(e){this.eat(77)?(this.state.canStartArrow=!1,e.superClass=this.parseExprSubscripts()):e.superClass=null}parseExport(e,t){let s=this.parseMaybeImportPhase(e,!0),i=this.maybeParseExportDefaultSpecifier(e,s),r=!i||this.eat(8),n=r&&this.eatExportStar(e),o=n&&this.maybeParseExportNamespaceSpecifier(e),h=r&&(!o||this.eat(8)),l=i||n;if(n&&!o){if(i&&this.unexpected(),t)throw this.raise(c.UnsupportedDecoratorExport,e);return this.parseExportFrom(e,!0),this.sawUnambiguousESM=!0,this.finishNode(e,"ExportAllDeclaration")}let p=this.maybeParseExportNamedSpecifiers(e);i&&r&&!n&&!p&&this.unexpected(null,2),o&&h&&this.unexpected(null,94);let u;if(l||p){if(u=!1,t)throw this.raise(c.UnsupportedDecoratorExport,e);this.parseExportFrom(e,l)}else u=this.maybeParseExportDeclaration(e);if(l||p||u){let f=e;if(this.checkExport(f,!0,!1,!!f.source),f.declaration?.type==="ClassDeclaration")this.maybeTakeDecorators(t,f.declaration,f);else if(t)throw this.raise(c.UnsupportedDecoratorExport,e);return this.sawUnambiguousESM=!0,this.finishNode(f,"ExportNamedDeclaration")}if(this.eat(61)){let f=e,m=this.parseExportDefaultExpression();if(f.declaration=m,m.type==="ClassDeclaration")this.maybeTakeDecorators(t,m,f);else if(t)throw this.raise(c.UnsupportedDecoratorExport,e);return this.checkExport(f,!0,!0),this.sawUnambiguousESM=!0,this.finishNode(f,"ExportDefaultDeclaration")}throw this.unexpected(null,2)}eatExportStar(e){return this.eat(51)}maybeParseExportDefaultSpecifier(e,t){if(t||this.isExportDefaultSpecifier()){this.expectPlugin("exportDefaultFrom",t?.start);let s=t||this.parseIdentifier(!0),i=this.startNodeAtNode(s);return i.exported=s,e.specifiers=[this.finishNode(i,"ExportDefaultSpecifier")],!0}return!1}maybeParseExportNamespaceSpecifier(e){if(this.isContextual(89)){e.specifiers??=[];let t=this.startNodeAt(this.state.lastTokStartLoc);return this.next(),t.exported=this.parseModuleExportName(),e.specifiers.push(this.finishNode(t,"ExportNamespaceSpecifier")),!0}return!1}maybeParseExportNamedSpecifiers(e){if(this.match(2)){let t=e;t.specifiers||(t.specifiers=[]);let s=t.exportKind==="type";return t.specifiers.push(...this.parseExportSpecifiers(s)),t.source=null,t.attributes=[],t.declaration=null,!0}return!1}maybeParseExportDeclaration(e){return this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,e.attributes=[],e.declaration=this.parseExportDeclaration(e),!0):!1}isAsyncFunction(){if(!this.isContextual(91))return!1;let e=this.nextTokenInLineStart();return this.isUnparsedContextual(e,"function")}parseExportDefaultExpression(){let e=this.startNode();if(this.match(64))return this.next(),this.parseFunction(e,5);if(this.isAsyncFunction())return this.next(),this.next(),this.parseFunction(e,13);if(this.match(76))return this.parseClass(e,!0,!0);if(this.match(22))return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(!1),this.startNode()),!0,!0);if(this.match(71)||this.match(70)||this.isLet()||this.isUsing()||this.isAwaitUsing())throw this.raise(c.UnsupportedDefaultExport,this.state.startLoc);let t=this.parseMaybeAssignAllowIn();return this.semicolon(),t}parseExportDeclaration(e){return this.match(76)?this.parseClass(this.startNode(),!0,!1):this.parseStatementListItem()}isExportDefaultSpecifier(){let{type:e}=this.state;if(C(e)){if(e===91&&!this.state.containsEsc||e===96)return!1;if((e===126||e===125)&&!this.state.containsEsc){let i=this.nextTokenStart(),r=this.input.charCodeAt(i);if(r===123||this.chStartsBindingIdentifier(r,i)&&!this.input.startsWith("from",i))return this.expectOnePlugin(["flow","typescript"]),!1}}else if(!this.match(61))return!1;let t=this.nextTokenStart(),s=this.isUnparsedContextual(t,"from");if(this.input.charCodeAt(t)===44||C(this.state.type)&&s)return!0;if(this.match(61)&&s){let i=this.input.charCodeAt(this.nextTokenStartSince(t+4));return i===34||i===39}return!1}parseExportFrom(e,t){this.eatContextual(94)?(e.source=this.parseImportSource(),this.checkExport(e),this.maybeParseImportAttributes(e)):t&&this.unexpected(),this.semicolon()}shouldParseExportDeclaration(){let{type:e}=this.state;return e===22&&(this.expectOnePlugin(["decorators","decorators-legacy"]),this.hasPlugin("decorators"))?!0:this.isUsing()?(this.raise(c.UsingDeclarationExport,this.state.startLoc),!0):this.isAwaitUsing()?(this.raise(c.UsingDeclarationExport,this.state.startLoc),!0):e===70||e===71||e===64||e===76||this.isLet()||this.isAsyncFunction()}checkExport(e,t,s,i){if(t){if(s){if(this.checkDuplicateExports(e,"default"),this.hasPlugin("exportDefaultFrom")){let r=e.declaration;r.type==="Identifier"&&r.name==="from"&&r.end-r.start===4&&!r.extra?.parenthesized&&this.raise(c.ExportDefaultFromAsIdentifier,r)}}else if(e.specifiers?.length)for(let r of e.specifiers){let{exported:n}=r,o=n.type==="Identifier"?n.name:n.value;if(this.checkDuplicateExports(r,o),!i&&r.local){let{local:h}=r;h.type!=="Identifier"?this.raise(c.ExportBindingIsString,r,{localName:h.value,exportName:o}):(this.checkReservedWord(h.name,h.start,!0,!1),this.scope.checkLocalExport(h))}}else if(e.declaration){let r=e.declaration;if(r.type==="FunctionDeclaration"||r.type==="ClassDeclaration"){let{id:n}=r;if(!n)throw new Error("Assertion failure");this.checkDuplicateExports(e,n.name)}else if(r.type==="VariableDeclaration")for(let n of r.declarations)this.checkDeclaration(n.id)}}}checkDeclaration(e){if(e.type==="Identifier")this.checkDuplicateExports(e,e.name);else if(e.type==="ObjectPattern")for(let t of e.properties)this.checkDeclaration(t);else if(e.type==="ArrayPattern")for(let t of e.elements)t&&this.checkDeclaration(t);else e.type==="ObjectProperty"?this.checkDeclaration(e.value):e.type==="RestElement"?this.checkDeclaration(e.argument):e.type==="AssignmentPattern"&&this.checkDeclaration(e.left)}checkDuplicateExports(e,t){this.exportedIdentifiers.has(t)&&(t==="default"?this.raise(c.DuplicateDefaultExport,e):this.raise(c.DuplicateExport,e,{exportName:t})),this.exportedIdentifiers.add(t)}parseExportSpecifiers(e){let t=[],s=!0;for(this.expect(2);!this.eat(4);){if(s)s=!1;else if(this.expect(8),this.eat(4))break;let i=this.isContextual(126),r=this.match(130),n=this.startNode();n.local=this.parseModuleExportName(),t.push(this.parseExportSpecifier(n,r,e,i))}return t}parseExportSpecifier(e,t,s,i){return this.eatContextual(89)?e.exported=this.parseModuleExportName():t?e.exported=this.cloneStringLiteral(e.local):e.exported||(e.exported=this.cloneIdentifier(e.local)),this.finishNode(e,"ExportSpecifier")}parseModuleExportName(){if(this.match(130)){let e=this.parseStringLiteral(this.state.value),t=$i.exec(e.value);return t&&this.raise(c.ModuleExportNameHasLoneSurrogate,e,{surrogateCharCode:t[0].charCodeAt(0)}),e}return this.parseIdentifier(!0)}checkImportPhase(e){let{specifiers:t}=e,s=t.length===1?t[0].type:null;e.phase==="source"?s!=="ImportDefaultSpecifier"&&this.raise(c.SourcePhaseImportRequiresDefault,t[0]):e.phase==="defer"&&s!=="ImportNamespaceSpecifier"&&this.raise(c.DeferImportRequiresNamespace,t[0])}isPotentialImportPhase(e){return e?!1:this.isContextual(101)||this.isContextual(93)}applyImportPhase(e,t,s,i){t||(s==="source"?(this.expectPlugin("sourcePhaseImports",i),e.phase="source"):s==="defer"?(this.expectPlugin("deferredImportEvaluation",i),e.phase="defer"):this.hasPlugin("sourcePhaseImports")&&(e.phase=null))}parseMaybeImportPhase(e,t){if(!this.isPotentialImportPhase(t))return this.applyImportPhase(e,t,null),null;let s=this.startNode(),i=this.parseIdentifierName(!0),{type:r}=this.state;return(U(r)?r!==94||this.lookaheadCharCode()===102:r!==8)?(this.applyImportPhase(e,t,i,s.start),null):(this.applyImportPhase(e,t,null),this.createIdentifier(s,i))}isPrecedingIdImportPhase(e){let{type:t}=this.state;return C(t)?t!==94||this.lookaheadCharCode()===102:t!==8}parseImport(e){return this.match(130)?this.parseImportSourceAndAttributes(e):this.parseImportSpecifiersAndAfter(e,this.parseMaybeImportPhase(e,!1))}parseImportSpecifiersAndAfter(e,t){e.specifiers=[];let i=!this.maybeParseDefaultImportSpecifier(e,t)||this.eat(8),r=i&&this.maybeParseStarImportSpecifier(e);return i&&!r&&this.parseNamedImportSpecifiers(e),this.expectContextual(94),this.parseImportSourceAndAttributes(e)}parseImportSourceAndAttributes(e){return e.specifiers??=[],e.source=this.parseImportSource(),this.maybeParseImportAttributes(e),this.checkImportPhase(e),this.semicolon(),this.sawUnambiguousESM=!0,this.finishNode(e,"ImportDeclaration")}parseImportSource(){return this.match(130)||this.unexpected(),this.parseExprAtom()}parseImportSpecifierLocal(e,t,s){t.local=this.parseIdentifier(),e.specifiers.push(this.finishImportSpecifier(t,s))}finishImportSpecifier(e,t,s=8201){return this.checkLVal(e.local,{type:t},s),this.finishNode(e,t)}parseImportAttributes(){this.expect(2);let e=[],t=new Set;do{if(this.match(4))break;let s=this.startNode(),i=this.state.value;if(t.has(i)&&this.raise(c.ModuleAttributesWithDuplicateKeys,this.state.startLoc,{key:i}),t.add(i),this.match(130)?s.key=this.parseStringLiteral(i):s.key=this.parseIdentifier(!0),this.expect(10),!this.match(130))throw this.raise(c.ModuleAttributeInvalidValue,this.state.startLoc);s.value=this.parseStringLiteral(this.state.value),e.push(this.finishNode(s,"ImportAttribute"))}while(this.eat(8));return this.expect(4),e}maybeParseImportAttributes(e){let t;if(this.match(72)){if(this.hasPrecedingLineBreak()&&this.lookaheadCharCode()===40)return;this.next(),t=this.parseImportAttributes()}else t=[];e.attributes=t}maybeParseDefaultImportSpecifier(e,t){if(t){let s=this.startNodeAtNode(t);return s.local=t,e.specifiers.push(this.finishImportSpecifier(s,"ImportDefaultSpecifier")),!0}else if(U(this.state.type))return this.parseImportSpecifierLocal(e,this.startNode(),"ImportDefaultSpecifier"),!0;return!1}maybeParseStarImportSpecifier(e){if(this.match(51)){let t=this.startNode();return this.next(),this.expectContextual(89),this.parseImportSpecifierLocal(e,t,"ImportNamespaceSpecifier"),!0}return!1}parseNamedImportSpecifiers(e){let t=!0;for(this.expect(2);!this.eat(4);){if(t)t=!1;else{if(this.eat(10))throw this.raise(c.DestructureNamedImport,this.state.startLoc);if(this.expect(8),this.eat(4))break}let s=this.startNode(),i=this.match(130),r=this.isContextual(126);s.imported=this.parseModuleExportName();let n=this.parseImportSpecifier(s,i,e.importKind==="type"||e.importKind==="typeof",r,void 0);e.specifiers.push(n)}}parseImportSpecifier(e,t,s,i,r){if(this.eatContextual(89))e.local=this.parseIdentifier();else{let{imported:n}=e;if(t)throw this.raise(c.ImportBindingIsString,e,{importName:n.value});this.checkReservedWord(n.name,e.start,!0,!0),e.local||(e.local=this.cloneIdentifier(n))}return this.finishImportSpecifier(e,"ImportSpecifier",r)}isThisParam(e){return e.type==="Identifier"&&e.name==="this"}},_t=/in(?:stanceof)?|as|satisfies/y;function Vi(a){if(a==null)throw new Error(`Unexpected ${a} value.`);return a}function Je(a){if(!a)throw new Error("Assert fail")}var qi={AbstractMethodHasImplementation:({methodName:a})=>`Method '${a}' cannot have an implementation because it is marked abstract.`,AbstractPropertyHasInitializer:({propertyName:a})=>`Property '${a}' cannot have an initializer because it is marked abstract.`,AccessorCannotBeOptional:"An 'accessor' property cannot be declared optional.",AccessorCannotDeclareThisParameter:"'get' and 'set' accessors cannot declare 'this' parameters.",AccessorCannotHaveTypeParameters:"An accessor cannot have type parameters.",ClassMethodHasDeclare:"Class methods cannot have the 'declare' modifier.",ClassMethodHasReadonly:"Class methods cannot have the 'readonly' modifier.",ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.",ConstructorHasTypeParameters:"Type parameters cannot appear on a constructor declaration.",DeclaratorDefiniteAssertionRequiresTypeAnnotation:"Declarations with definite assignment assertions must also have type annotations.",DeclaratorDefiniteAssertionWithInitializer:"Declarations with initializers cannot also have definite assignment assertions.",DeclareAccessor:({kind:a})=>`'declare' is not allowed in ${a}ters.`,DeclareClassFieldHasInitializer:"Initializers are not allowed in ambient contexts.",DeclareFunctionHasImplementation:"An implementation cannot be declared in ambient contexts.",DecoratorAbstractMethod:({kind:a})=>`Decorators can't be used with ${a.startsWith("a")?"an":"a"} ${a}.`,DuplicateAccessibilityModifier:({modifier:a})=>`Accessibility modifier already seen: '${a}'.`,DuplicateModifier:({modifier:a})=>`Duplicate modifier: '${a}'.`,EmptyHeritageClauseType:({token:a})=>`'${a}' list cannot be empty.`,EmptyNamespaceName:"Namespace must be given a name.",EmptyTypeArguments:"Type argument list cannot be empty.",EmptyTypeParameters:"Type parameter list cannot be empty.",ExpectedAmbientAfterExportDeclare:"'export declare' must be followed by an ambient declaration.",ExportAssignmentInTSNamespace:"An export assignment cannot be used in a namespace.",ExportInTSNamespace:"Export declarations are not permitted in a namespace.",ImportAliasHasImportType:"An import alias can not use 'import type'.",ImportInTSNamespace:"Import declarations in a namespace cannot reference a module.",IncompatibleModifiers:({modifiers:a})=>`'${a[0]}' modifier cannot be used with '${a[1]}' modifier.`,IndexSignatureHasAbstract:"Index signatures cannot have the 'abstract' modifier.",IndexSignatureHasAccessibility:({modifier:a})=>`Index signatures cannot have an accessibility modifier ('${a}').`,IndexSignatureHasDeclare:"Index signatures cannot have the 'declare' modifier.",IndexSignatureHasOverride:"'override' modifier cannot appear on an index signature.",IndexSignatureHasStatic:"Index signatures cannot have the 'static' modifier.",InitializerNotAllowedInAmbientContext:"Initializers are not allowed in ambient contexts.",InlineModuleDeclarationMustUseString:"`module ... {}` declarations must have a string name. Use `namespace ... {}` instead.",InvalidHeritageClauseType:({token:a})=>`'${a}' list can only include identifiers or qualified-names with optional type arguments.`,InvalidModifierOnAwaitUsingDeclaration:a=>`'${a}' modifier cannot appear on an await using declaration.`,InvalidModifierOnTypeMember:({modifier:a})=>`'${a}' modifier cannot appear on a type member.`,InvalidModifierOnTypeParameter:({modifier:a})=>`'${a}' modifier cannot appear on a type parameter.`,InvalidModifierOnTypeParameterPositions:({modifier:a})=>`'${a}' modifier can only appear on a type parameter of a class, interface or type alias.`,InvalidModifierOnUsingDeclaration:a=>`'${a}' modifier cannot appear on a using declaration.`,InvalidModifiersOrder:({orderedModifiers:a})=>`'${a[0]}' modifier must precede '${a[1]}' modifier.`,InvalidNamespaceName:a=>`Namespace name cannot be '${a}'.`,InvalidPropertyAccessAfterInstantiationExpression:"Invalid property access after an instantiation expression. You can either wrap the instantiation expression in parentheses, or delete the type arguments.",InvalidTupleMemberLabel:"Tuple members must be labeled with a simple identifier.",MissingInterfaceName:"'interface' declarations must be followed by an identifier.",NamespaceExportInTSNamespace:"Global module exports may only appear at top level.",NonAbstractClassHasAbstractMethod:"Abstract methods can only appear within an abstract class.",NonClassMethodPropertyHasAbstractModifier:"'abstract' modifier can only appear on a class, method, or property declaration.",OptionalTypeBeforeRequired:"A required element cannot follow an optional element.",OverrideNotInSubClass:"This member cannot have an 'override' modifier because its containing class does not extend another class.",PatternIsOptional:"A binding pattern parameter cannot be optional in an implementation signature.",PrivateElementHasAbstract:"Private elements cannot have the 'abstract' modifier.",PrivateElementHasAccessibility:({modifier:a})=>`Private elements cannot have an accessibility modifier ('${a}').`,ReadonlyForMethodSignature:"'readonly' modifier can only appear on a property declaration or index signature.",ReservedArrowTypeParam:"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.",ReservedTypeAssertion:"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",SetAccessorCannotHaveOptionalParameter:"A 'set' accessor cannot have an optional parameter.",SetAccessorCannotHaveRestParameter:"A 'set' accessor cannot have rest parameter.",SetAccessorCannotHaveReturnType:"A 'set' accessor cannot have a return type annotation.",SingleTypeParameterWithoutTrailingComma:({typeParameterName:a})=>`Single type parameter ${a} should have a trailing comma. Example usage: <${a},>.`,StaticBlockCannotHaveModifier:"Static class blocks cannot have any modifier.",TupleOptionalAfterType:"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).",TypeAnnotationAfterAssign:"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",TypeImportCannotSpecifyDefaultAndNamed:"A type-only import can specify a default import or named bindings, but not both.",TypeModifierIsUsedInTypeExports:"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",TypeModifierIsUsedInTypeImports:"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",UnexpectedParameterInitializer:"A parameter initializer is only allowed in a function or constructor implementation.",UnexpectedParameterModifier:"A parameter property is only allowed in a constructor implementation.",UnexpectedReadonly:"'readonly' type modifier is only permitted on array and tuple literal types.",UnexpectedTypeAnnotation:"Did not expect a type annotation here.",UnexpectedTypeCastInParameter:"Unexpected type cast in parameter position.",UnexpectedTypeDeclaration:a=>`'${a}' declarations can only be declared inside a block.`,UnsupportedImportTypeArgument:"Argument in a type import must be a string literal.",UnsupportedParameterPropertyKind:"A parameter property may not be declared using a binding pattern.",UnsupportedSignatureParameterKind:({type:a})=>`Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${a}.`,UsingDeclarationInAmbientContext:a=>`'${a}' declarations are not allowed in ambient contexts.`},d=R`typescript`(qi);function zi(a){switch(a){case"any":return"TSAnyKeyword";case"boolean":return"TSBooleanKeyword";case"bigint":return"TSBigIntKeyword";case"never":return"TSNeverKeyword";case"number":return"TSNumberKeyword";case"object":return"TSObjectKeyword";case"string":return"TSStringKeyword";case"symbol":return"TSSymbolKeyword";case"undefined":return"TSUndefinedKeyword";case"unknown":return"TSUnknownKeyword";default:return}}function Xe(a){return a==="private"||a==="public"||a==="protected"}function Hi(a){return a==="in"||a==="out"}function le(a){if(a.extra?.parenthesized)return!1;switch(a.type){case"Identifier":return!0;case"MemberExpression":return!a.computed&&le(a.object);case"TSInstantiationExpression":return le(a.expression);default:return!1}}var Ki=a=>class extends a{getScopeHandler(){return Kt}tsIsIdentifier(){return C(this.state.type)}tsTokenCanFollowModifier(){return this.match(0)||this.match(2)||this.match(51)||this.match(17)||this.match(134)||this.isLiteralPropertyName()}tsNextTokenOnSameLineAndCanFollowModifier(){return this.next(),this.hasPrecedingLineBreak()?!1:this.tsTokenCanFollowModifier()}tsNextTokenCanFollowModifier(){return this.match(102)?(this.next(),this.tsTokenCanFollowModifier()):this.tsNextTokenOnSameLineAndCanFollowModifier()}tsParseModifier(t,s,i){if(!C(this.state.type)&&this.state.type!==54&&this.state.type!==71)return;let r=this.state.value;if(t.includes(r)){if(i&&this.match(102)||s&&this.tsIsStartOfStaticBlocks())return;if(this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this)))return r}}tsParseModifiers({allowedModifiers:t,disallowedModifiers:s,stopOnStartOfClassStaticBlock:i,errorTemplate:r=d.InvalidModifierOnTypeMember},n){let o=(l,p,u,f)=>{p===u&&n[f]&&this.raise(d.InvalidModifiersOrder,l,{orderedModifiers:[u,f]})},h=(l,p,u,f)=>{(n[u]&&p===f||n[f]&&p===u)&&this.raise(d.IncompatibleModifiers,l,{modifiers:[u,f]})};for(;;){let{startLoc:l}=this.state,p=this.tsParseModifier(t.concat(s??[]),i,n.static);if(!p)break;Xe(p)?n.accessibility?this.raise(d.DuplicateAccessibilityModifier,l,{modifier:p}):(o(l,p,p,"override"),o(l,p,p,"static"),o(l,p,p,"readonly"),n.accessibility=p):Hi(p)?(n[p]&&this.raise(d.DuplicateModifier,l,{modifier:p}),n[p]=!0,o(l,p,"in","out")):(Object.hasOwn(n,p)?this.raise(d.DuplicateModifier,l,{modifier:p}):(o(l,p,"static","readonly"),o(l,p,"static","override"),o(l,p,"override","readonly"),o(l,p,"abstract","override"),h(l,p,"declare","override"),h(l,p,"static","abstract")),n[p]=!0),s?.includes(p)&&this.raise(r,l,{modifier:p})}}tsIsListTerminator(t){switch(t){case"EnumMembers":case"TypeMembers":return this.match(4);case"HeritageClauseElement":return this.match(2);case"TupleElementTypes":return this.match(1);case"TypeParametersOrArguments":return this.match(44)}}tsParseList(t,s){let i=[];for(;!this.tsIsListTerminator(t);)i.push(s());return i}tsParseDelimitedList(t,s,i){return Vi(this.tsParseDelimitedListWorker(t,s,!0,i))}tsParseDelimitedListWorker(t,s,i,r){let n=[],o=-1;for(;!this.tsIsListTerminator(t);){o=-1;let h=s();if(h==null)return;if(n.push(h),this.eat(8)){o=this.state.lastTokStartLoc.index;continue}if(this.tsIsListTerminator(t))break;i&&this.expect(8);return}return r&&(r.value=o),n}tsParseBracketedList(t,s,i,r,n){r||(i?this.expect(0):this.expect(43));let o=this.tsParseDelimitedList(t,s,n);return i?this.expect(1):this.expect(44),o}tsParseImportType(){let t=this.startNode();return this.expect(79),this.expect(6),this.match(130)?t.source=this.parseStringLiteral(this.state.value):(this.raise(d.UnsupportedImportTypeArgument,this.state.startLoc),t.source=this.tsParseNonConditionalType()),this.eat(8)?t.options=this.tsParseImportTypeOptions():t.options=null,this.expect(7),this.eat(12)&&(t.qualifier=this.tsParseEntityName(3)),this.match(43)&&(t.typeArguments=this.tsParseTypeArguments()),this.finishNode(t,"TSImportType")}tsParseImportTypeOptions(){let t=this.startNode();this.expect(2);let s=this.startNode();return this.isContextual(72)?(s.method=!1,s.key=this.parseIdentifier(!0),s.computed=!1,s.shorthand=!1):this.unexpected(null,72),this.expect(10),s.value=this.tsParseImportTypeWithPropertyValue(),t.properties=[this.finishObjectProperty(s)],this.eat(8),this.expect(4),this.finishNode(t,"ObjectExpression")}tsParseImportTypeWithPropertyValue(){let t=this.startNode(),s=[];for(this.expect(2);!this.match(4);){let i=this.state.type;C(i)||i===130?s.push(super.parsePropertyDefinition(null)):this.unexpected(),this.eat(8)}return t.properties=s,this.next(),this.finishNode(t,"ObjectExpression")}tsParseEntityName(t){let s;if(t&1&&this.match(74))if(t&2)s=this.parseIdentifier(!0);else{let i=this.startNode();this.next(),s=this.finishNode(i,"ThisExpression")}else s=this.parseIdentifier(!!(t&1));for(;this.eat(12);){let i=this.startNodeAtNode(s);i.left=s,i.right=this.parseIdentifier(!!(t&1)),s=this.finishNode(i,"TSQualifiedName")}return s}tsParseTypeReference(){let t=this.startNode();return t.typeName=this.tsParseEntityName(1),!this.hasPrecedingLineBreak()&&this.match(43)&&(t.typeArguments=this.tsParseTypeArguments()),this.finishNode(t,"TSTypeReference")}tsParseThisTypePredicate(t){this.next();let s=this.startNodeAtNode(t);return s.parameterName=t,s.typeAnnotation=this.tsParseTypeAnnotation(!1),s.asserts=!1,this.finishNode(s,"TSTypePredicate")}tsParseThisTypeNode(){let t=this.startNode();return this.next(),this.finishNode(t,"TSThisType")}tsParseTypeQuery(){let t=this.startNode();return this.expect(83),this.match(79)?t.exprName=this.tsParseImportType():t.exprName=this.tsParseEntityName(1),!this.hasPrecedingLineBreak()&&this.match(43)&&(t.typeArguments=this.tsParseTypeArguments()),this.finishNode(t,"TSTypeQuery")}tsParseInOutModifiers=this.tsParseModifiers.bind(this,{allowedModifiers:["in","out"],disallowedModifiers:["const","public","private","protected","readonly","declare","abstract","override"],errorTemplate:d.InvalidModifierOnTypeParameter});tsParseConstModifier=this.tsParseModifiers.bind(this,{allowedModifiers:["const"],disallowedModifiers:["in","out"],errorTemplate:d.InvalidModifierOnTypeParameterPositions});tsParseInOutConstModifiers=this.tsParseModifiers.bind(this,{allowedModifiers:["in","out","const"],disallowedModifiers:["public","private","protected","readonly","declare","abstract","override"],errorTemplate:d.InvalidModifierOnTypeParameter});tsParseTypeParameter(t){let s=this.startNode();return t(s),s.name=this.tsParseTypeParameterName(),s.constraint=this.tsEatThenParseType(77),s.default=this.tsEatThenParseType(25),this.finishNode(s,"TSTypeParameter")}tsTryParseTypeParameters(t){if(this.match(43))return this.tsParseTypeParameters(t)}tsParseTypeParameters(t){let s=this.startNode();this.match(43)||this.match(138)?this.next():this.unexpected();let i={value:-1};return s.params=this.tsParseBracketedList("TypeParametersOrArguments",this.tsParseTypeParameter.bind(this,t),!1,!0,i),s.params.length===0&&this.raise(d.EmptyTypeParameters,s),i.value!==-1&&this.addExtra(s,"trailingComma",i.value),this.finishNode(s,"TSTypeParameterDeclaration")}tsFillSignature(t,s){let i=t===15,r="params",n="returnType";s.typeParameters=this.tsTryParseTypeParameters(this.tsParseConstModifier),this.expect(6),s[r]=this.tsParseBindingListForSignature(),i?s[n]=this.tsParseTypeOrTypePredicateAnnotation(t):this.match(t)&&(s[n]=this.tsParseTypeOrTypePredicateAnnotation(t))}tsParseBindingListForSignature(){let t=super.parseBindingList(7,41,2);for(let s of t){let{type:i}=s;(i==="AssignmentPattern"||i==="TSParameterProperty")&&this.raise(d.UnsupportedSignatureParameterKind,s,{type:i})}return t}tsParseTypeMemberSemicolon(){!this.eat(8)&&!this.isLineTerminator()&&this.expect(9)}tsParseSignatureMember(t,s){return this.tsFillSignature(10,s),this.tsParseTypeMemberSemicolon(),this.finishNode(s,t)}tsIsUnambiguouslyIndexSignature(){return this.next(),C(this.state.type)?(this.next(),this.match(10)):!1}tsTryParseIndexSignature(t){if(!(this.match(0)&&this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))))return;this.expect(0);let s=this.parseIdentifier();s.typeAnnotation=this.tsParseTypeAnnotation(),this.resetEndLocation(s),this.expect(1),t.parameters=[s];let i=this.tsTryParseTypeAnnotation();return i&&(t.typeAnnotation=i),this.tsParseTypeMemberSemicolon(),this.finishNode(t,"TSIndexSignature")}tsParsePropertyOrMethodSignature(t,s){if(this.eat(13)&&(t.optional=!0),this.match(6)||this.match(43)){s&&this.raise(d.ReadonlyForMethodSignature,t);let i=t;if(i.kind&&this.match(43)&&this.raise(d.AccessorCannotHaveTypeParameters,this.state.curPosition()),this.tsFillSignature(10,i),this.tsParseTypeMemberSemicolon(),i.kind==="get")i.params.length>0&&(this.raise(c.BadGetterArity,this.state.curPosition()),this.isThisParam(i.params[0])&&this.raise(d.AccessorCannotDeclareThisParameter,this.state.curPosition()));else if(i.kind==="set"){if(i.params.length!==1)this.raise(c.BadSetterArity,this.state.curPosition());else{let r=i.params[0];this.isThisParam(r)&&this.raise(d.AccessorCannotDeclareThisParameter,this.state.curPosition()),r.type==="Identifier"&&r.optional&&this.raise(d.SetAccessorCannotHaveOptionalParameter,this.state.curPosition()),r.type==="RestElement"&&this.raise(d.SetAccessorCannotHaveRestParameter,this.state.curPosition())}i.returnType&&this.raise(d.SetAccessorCannotHaveReturnType,i.returnType)}else i.kind="method";return this.finishNode(i,"TSMethodSignature")}else{let i=t;s&&(i.readonly=!0);let r=this.tsTryParseTypeAnnotation();return r&&(i.typeAnnotation=r),this.tsParseTypeMemberSemicolon(),this.finishNode(i,"TSPropertySignature")}}tsParseTypeMember(){let t=this.startNode();if(this.match(6)||this.match(43))return this.tsParseSignatureMember("TSCallSignatureDeclaration",t);if(this.match(73)){let i=this.startNode();return this.next(),this.match(6)||this.match(43)?this.tsParseSignatureMember("TSConstructSignatureDeclaration",t):(t.key=this.createIdentifier(i,"new"),this.tsParsePropertyOrMethodSignature(t,!1))}this.tsParseModifiers({allowedModifiers:["readonly"],disallowedModifiers:["declare","abstract","private","protected","public","static","override"]},t);let s=this.tsTryParseIndexSignature(t);return s||(super.parsePropertyName(t),!t.computed&&t.key.type==="Identifier"&&(t.key.name==="get"||t.key.name==="set")&&this.tsTokenCanFollowModifier()&&(t.kind=t.key.name,super.parsePropertyName(t),!this.match(6)&&!this.match(43)&&this.unexpected(null,6)),this.tsParsePropertyOrMethodSignature(t,!!t.readonly))}tsParseTypeLiteral(){let t=this.startNode();return t.members=this.tsParseObjectTypeMembers(),this.finishNode(t,"TSTypeLiteral")}tsParseObjectTypeMembers(){this.expect(2);let t=this.tsParseList("TypeMembers",this.tsParseTypeMember.bind(this));return this.expect(4),t}tsIsStartOfMappedType(){return this.next(),this.eat(49)?this.isContextual(118):(this.isContextual(118)&&this.next(),!this.match(0)||(this.next(),!this.tsIsIdentifier())?!1:(this.next(),this.match(54)))}tsParseMappedType(){let t=this.startNode();return this.expect(2),this.match(49)?(t.readonly=this.state.value,this.next(),this.expectContextual(118)):this.eatContextual(118)&&(t.readonly=!0),this.expect(0),t.key=this.tsParseTypeParameterName(),t.constraint=this.tsExpectThenParseType(54),t.nameType=this.eatContextual(89)?this.tsParseType():null,this.expect(1),this.match(49)?(t.optional=this.state.value,this.next(),this.expect(13)):this.eat(13)&&(t.optional=!0),t.typeAnnotation=this.tsTryParseType(),this.semicolon(),this.expect(4),this.finishNode(t,"TSMappedType")}tsParseTupleType(){let t=this.startNode();t.elementTypes=this.tsParseBracketedList("TupleElementTypes",this.tsParseTupleElementType.bind(this),!0,!1);let s=!1;return t.elementTypes.forEach(i=>{let{type:r}=i;s&&r!=="TSRestType"&&r!=="TSOptionalType"&&!(r==="TSNamedTupleMember"&&i.optional)&&this.raise(d.OptionalTypeBeforeRequired,i),s||=r==="TSNamedTupleMember"&&i.optional||r==="TSOptionalType"}),this.finishNode(t,"TSTupleType")}tsParseTupleElementType(){let t=this.state.startLoc,s=this.eat(17),{startLoc:i}=this.state,r,n,o,h,p=U(this.state.type)?this.lookaheadCharCode():null;if(p===58)r=!0,o=!1,n=this.parseIdentifier(!0),this.expect(10),h=this.tsParseType();else if(p===63){o=!0;let u=this.state.value,f=this.tsParseNonArrayType();this.lookaheadCharCode()===58?(r=!0,n=this.createIdentifier(this.startNodeAt(i),u),this.expect(13),this.expect(10),h=this.tsParseType()):(r=!1,h=f,this.expect(13))}else h=this.tsParseType(),o=this.eat(13),r=this.eat(10);if(r){let u;n?(u=this.startNodeAt(i),u.optional=o,u.label=n,u.elementType=h,this.eat(13)&&(u.optional=!0,this.raise(d.TupleOptionalAfterType,this.state.lastTokStartLoc))):(u=this.startNodeAt(i),u.optional=o,this.raise(d.InvalidTupleMemberLabel,h),u.label=h,u.elementType=this.tsParseType()),h=this.finishNode(u,"TSNamedTupleMember")}else if(o){let u=this.startNodeAt(i);u.typeAnnotation=h,h=this.finishNode(u,"TSOptionalType")}if(s){let u=this.startNodeAt(t);u.typeAnnotation=h,h=this.finishNode(u,"TSRestType")}return h}tsParseParenthesizedType(){let t=this.startNode();return this.expect(6),t.typeAnnotation=this.tsParseType(),this.expect(7),this.finishNode(t,"TSParenthesizedType")}tsParseFunctionOrConstructorType(t,s){let i=this.startNode();return t==="TSConstructorType"&&(i.abstract=!!s,s&&this.next(),this.next()),this.tsInAllowConditionalTypesContext(()=>this.tsFillSignature(15,i)),this.finishNode(i,t)}tsParseLiteralTypeNode(){let t=this.startNode();switch(this.state.type){case 131:case 132:case 130:case 81:case 82:t.literal=super.parseExprAtom();break;default:this.unexpected()}return this.finishNode(t,"TSLiteralType")}tsParseTemplateLiteralType(){let t=this.state.startLoc,s=this.parseTemplateElement(!1),i=[s];if(s.tail){let r=this.startNodeAt(t),n=this.startNodeAt(t);return n.expressions=[],n.quasis=i,r.literal=this.finishNode(n,"TemplateLiteral"),this.finishNode(r,"TSLiteralType")}else{let r=[];for(;!s.tail;)r.push(this.tsParseType()),this.readTemplateContinuation(),i.push(s=this.parseTemplateElement(!1));let n=this.startNodeAt(t);return n.types=r,n.quasis=i,this.finishNode(n,"TSTemplateLiteralType")}}parseTemplateSubstitution(){return this.state.inType?this.tsParseType():super.parseTemplateSubstitution()}tsParseThisTypeOrThisTypePredicate(){let t=this.tsParseThisTypeNode();return this.isContextual(112)&&!this.hasPrecedingLineBreak()?this.tsParseThisTypePredicate(t):t}tsParseNonArrayType(){switch(this.state.type){case 130:case 131:case 132:case 81:case 82:return this.tsParseLiteralTypeNode();case 49:if(this.state.value==="-"){let t=this.startNode(),s=this.lookahead();return s.type!==131&&s.type!==132&&this.unexpected(),t.literal=this.parseMaybeUnary(),this.finishNode(t,"TSLiteralType")}break;case 74:return this.tsParseThisTypeOrThisTypePredicate();case 83:return this.tsParseTypeQuery();case 79:return this.tsParseImportType();case 2:return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))?this.tsParseMappedType():this.tsParseTypeLiteral();case 0:return this.tsParseTupleType();case 6:if(!(this.optionFlags&2048)){let t=this.state.startLoc;this.next();let s=this.tsParseType();return this.expect(7),this.addExtra(s,"parenthesized",!0),this.addExtra(s,"parenStart",t.index),s}return this.tsParseParenthesizedType();case 21:case 20:return this.tsParseTemplateLiteralType();default:{let{type:t}=this.state;if(C(t)||t===84||t===80){let s=t===84?"TSVoidKeyword":t===80?"TSNullKeyword":zi(this.state.value);if(s!==void 0&&this.lookaheadCharCode()!==46){let i=this.startNode();return this.next(),this.finishNode(i,s)}return this.tsParseTypeReference()}}}throw this.unexpected()}tsParseArrayTypeOrHigher(){let{startLoc:t}=this.state,s=this.tsParseNonArrayType();for(;!this.hasPrecedingLineBreak()&&this.eat(0);)if(this.match(1)){let i=this.startNodeAt(t);i.elementType=s,this.expect(1),s=this.finishNode(i,"TSArrayType")}else{let i=this.startNodeAt(t);i.objectType=s,i.indexType=this.tsParseType(),this.expect(1),s=this.finishNode(i,"TSIndexedAccessType")}return s}tsParseTypeOperator(){let t=this.startNode(),s=this.state.value;return this.next(),t.operator=s,t.typeAnnotation=this.tsParseTypeOperatorOrHigher(),s==="readonly"&&this.tsCheckTypeAnnotationForReadOnly(t),this.finishNode(t,"TSTypeOperator")}tsCheckTypeAnnotationForReadOnly(t){switch(t.typeAnnotation.type){case"TSTupleType":case"TSArrayType":return;default:this.raise(d.UnexpectedReadonly,t)}}tsParseInferType(){let t=this.startNode();this.expectContextual(111);let s=this.startNode();return s.name=this.tsParseTypeParameterName(),s.constraint=this.tsTryParse(()=>this.tsParseConstraintForInferType()),t.typeParameter=this.finishNode(s,"TSTypeParameter"),this.finishNode(t,"TSInferType")}tsParseConstraintForInferType(){if(this.eat(77)){let t=this.tsInDisallowConditionalTypesContext(()=>this.tsParseType());if(this.state.inDisallowConditionalTypesContext||!this.match(13))return t}}tsParseTypeOperatorOrHigher(){return li(this.state.type)&&!this.state.containsEsc?this.tsParseTypeOperator():this.isContextual(111)?this.tsParseInferType():this.tsInAllowConditionalTypesContext(()=>this.tsParseArrayTypeOrHigher())}tsParseUnionOrIntersectionType(t,s,i){let r=this.startNode(),n=this.eat(i),o=[];do o.push(s());while(this.eat(i));return o.length===1&&!n?o[0]:(r.types=o,this.finishNode(r,t))}tsParseIntersectionTypeOrHigher(){return this.tsParseUnionOrIntersectionType("TSIntersectionType",this.tsParseTypeOperatorOrHigher.bind(this),41)}tsParseUnionTypeOrHigher(){return this.tsParseUnionOrIntersectionType("TSUnionType",this.tsParseIntersectionTypeOrHigher.bind(this),39)}tsIsStartOfFunctionType(){return this.match(43)?!0:this.match(6)&&this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))}tsSkipParameterStart(){if(C(this.state.type)||this.match(74))return this.next(),!0;if(this.match(2)){let{errors:t}=this.state,s=t.length;try{return this.parseObjectLike(4,!0),t.length===s}catch{return!1}}if(this.match(0)){this.next();let{errors:t}=this.state,s=t.length;try{return super.parseBindingList(1,93,1),t.length===s}catch{return!1}}return!1}tsIsUnambiguouslyStartOfFunctionType(){return this.next(),!!(this.match(7)||this.match(17)||this.tsSkipParameterStart()&&(this.match(10)||this.match(8)||this.match(13)||this.match(25)||this.match(7)&&(this.next(),this.match(15))))}tsParseTypeOrTypePredicateAnnotation(t){return this.tsInType(()=>{let s=this.startNode();this.expect(t);let i=this.startNode(),r=!!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));if(r&&this.match(74)){let h=this.tsParseThisTypeOrThisTypePredicate();return h.type==="TSThisType"?(i.parameterName=h,i.asserts=!0,i.typeAnnotation=null,h=this.finishNode(i,"TSTypePredicate")):(this.resetStartLocationFromNode(h,i),h.asserts=!0),s.typeAnnotation=h,this.finishNode(s,"TSTypeAnnotation")}let n=this.tsIsIdentifier()&&this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));if(!n)return r?(i.parameterName=this.parseIdentifier(),i.asserts=r,i.typeAnnotation=null,s.typeAnnotation=this.finishNode(i,"TSTypePredicate"),this.finishNode(s,"TSTypeAnnotation")):this.tsParseTypeAnnotation(!1,s);let o=this.tsParseTypeAnnotation(!1);return i.parameterName=n,i.typeAnnotation=o,i.asserts=r,s.typeAnnotation=this.finishNode(i,"TSTypePredicate"),this.finishNode(s,"TSTypeAnnotation")})}tsTryParseTypeOrTypePredicateAnnotation(){if(this.match(10))return this.tsParseTypeOrTypePredicateAnnotation(10)}tsTryParseTypeAnnotation(){if(this.match(10))return this.tsParseTypeAnnotation()}tsTryParseType(){return this.tsEatThenParseType(10)}tsParseTypePredicatePrefix(){let t=this.parseIdentifier();if(this.isContextual(112)&&!this.hasPrecedingLineBreak())return this.next(),t}tsParseTypePredicateAsserts(){if(this.state.type!==105)return!1;let t=this.state.containsEsc;return this.next(),!C(this.state.type)&&!this.match(74)?!1:(t&&this.raise(c.InvalidEscapedReservedWord,this.state.lastTokStartLoc,{reservedWord:"asserts"}),!0)}tsParseTypeAnnotation(t=!0,s=this.startNode()){return this.tsInType(()=>{t&&this.expect(10),s.typeAnnotation=this.tsParseType()}),this.finishNode(s,"TSTypeAnnotation")}tsParseType(){Je(this.state.inType);let t=this.tsParseNonConditionalType();if(this.state.inDisallowConditionalTypesContext||this.hasPrecedingLineBreak()||!this.eat(77))return t;let s=this.startNodeAtNode(t);return s.checkType=t,s.extendsType=this.tsInDisallowConditionalTypesContext(()=>this.tsParseNonConditionalType()),this.expect(13),s.trueType=this.tsInAllowConditionalTypesContext(()=>this.tsParseType()),this.expect(10),s.falseType=this.tsInAllowConditionalTypesContext(()=>this.tsParseType()),this.finishNode(s,"TSConditionalType")}isAbstractConstructorSignature(){return this.isContextual(120)&&this.isLookaheadContextual("new")}tsParseNonConditionalType(){return this.tsIsStartOfFunctionType()?this.tsParseFunctionOrConstructorType("TSFunctionType"):this.match(73)?this.tsParseFunctionOrConstructorType("TSConstructorType"):this.isAbstractConstructorSignature()?this.tsParseFunctionOrConstructorType("TSConstructorType",!0):this.tsParseUnionTypeOrHigher()}tsParseTypeAssertion(){this.getPluginOption("typescript","disallowAmbiguousJSXLike")&&this.raise(d.ReservedTypeAssertion,this.state.startLoc);let t=this.startNode();return t.typeAnnotation=this.tsInType(()=>(this.next(),this.match(71)?this.tsParseTypeReference():this.tsParseType())),this.expect(44),t.expression=this.parseMaybeUnary(),this.finishNode(t,"TSTypeAssertion")}tsParseHeritageClause(t){let s=this.state.startLoc,i=this.tsParseDelimitedList("HeritageClauseElement",()=>{let r=(this.state.canStartArrow=!1,super.parseExprSubscripts());le(r)||this.raise(d.InvalidHeritageClauseType,r.start,{token:t});let n=t==="extends"?"TSInterfaceHeritage":"TSClassImplements";if(r.type==="TSInstantiationExpression")return r.type=n,r;let o=this.startNodeAtNode(r);return o.expression=r,(this.match(43)||this.match(47))&&(o.typeArguments=this.tsParseTypeArgumentsInExpression()),this.finishNode(o,n)});return i.length||this.raise(d.EmptyHeritageClauseType,s,{token:t}),i}tsParseInterfaceDeclaration(t,s={}){if(this.hasFollowingLineBreak())return null;this.expectContextual(125),s.declare&&(t.declare=!0),C(this.state.type)?(t.id=this.parseIdentifier(),this.checkIdentifier(t.id,130)):(t.id=null,this.raise(d.MissingInterfaceName,this.state.startLoc)),t.typeParameters=this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers),this.eat(77)&&(t.extends=this.tsParseHeritageClause("extends"));let i=this.startNode();return i.body=this.tsInType(this.tsParseObjectTypeMembers.bind(this)),t.body=this.finishNode(i,"TSInterfaceBody"),this.finishNode(t,"TSInterfaceDeclaration")}tsParseTypeAliasDeclaration(t){return t.id=this.parseIdentifier(),this.checkIdentifier(t.id,2),t.typeAnnotation=this.tsInType(()=>{if(t.typeParameters=this.tsTryParseTypeParameters(this.tsParseInOutModifiers),this.expect(25),this.isContextual(110)&&this.lookaheadCharCode()!==46){let s=this.startNode();return this.next(),this.finishNode(s,"TSIntrinsicKeyword")}return this.tsParseType()}),this.semicolon(),this.finishNode(t,"TSTypeAliasDeclaration")}tsInTopLevelContext(t){if(this.curContext()!==E.brace){let s=this.state.context;this.state.context=[s[0]];try{return t()}finally{this.state.context=s}}else return t()}tsInType(t){let s=this.state.inType;this.state.inType=!0;try{return t()}finally{this.state.inType=s}}tsInDisallowConditionalTypesContext(t){let s=this.state.inDisallowConditionalTypesContext;this.state.inDisallowConditionalTypesContext=!0;try{return t()}finally{this.state.inDisallowConditionalTypesContext=s}}tsInAllowConditionalTypesContext(t){let s=this.state.inDisallowConditionalTypesContext;this.state.inDisallowConditionalTypesContext=!1;try{return t()}finally{this.state.inDisallowConditionalTypesContext=s}}tsEatThenParseType(t){if(this.match(t))return this.tsNextThenParseType()}tsExpectThenParseType(t){return this.tsInType(()=>(this.expect(t),this.tsParseType()))}tsNextThenParseType(){return this.tsInType(()=>(this.next(),this.tsParseType()))}tsParseEnumMember(){let t=this.startNode();return t.id=this.match(130)?super.parseStringLiteral(this.state.value):this.parseIdentifier(!0),this.eat(25)&&(t.initializer=super.parseMaybeAssignAllowIn()),this.finishNode(t,"TSEnumMember")}tsParseEnumDeclaration(t,s={}){return s.const&&(t.const=!0),s.declare&&(t.declare=!0),this.expectContextual(122),t.id=this.parseIdentifier(),this.checkIdentifier(t.id,t.const?8971:8459),t.body=this.tsParseEnumBody(),this.finishNode(t,"TSEnumDeclaration")}tsParseEnumBody(){let t=this.startNode();return this.expect(2),t.members=this.tsParseDelimitedList("EnumMembers",this.tsParseEnumMember.bind(this)),this.expect(4),this.finishNode(t,"TSEnumBody")}tsParseModuleBlock(t){let s=this.startNode();return t||this.scope.enter(0),this.expect(2),super.parseBlockOrModuleBlockBody(s.body=[],void 0,!0,4),t||this.scope.exit(),this.finishNode(s,"TSModuleBlock")}tsParseNamespaceDeclaration(t){return t.id=this.tsParseEntityName(0),t.id.type==="Identifier"&&this.checkIdentifier(t.id,1024),this.scope.enter(2048),this.prodParam.enter(0),t.body=this.tsParseModuleBlock(!1),this.prodParam.exit(),this.scope.exit(),this.finishNode(t,"TSModuleDeclaration")}tsParseAmbientExternalModuleDeclaration(t){let s=this.isContextual(108);if(s)t.kind="global",t.id=this.parseIdentifier();else{t.kind="module";let{type:i,value:r}=this.state;i===130?t.id=super.parseStringLiteral(r):C(i)?(this.raise(d.InlineModuleDeclarationMustUseString,this.state.startLoc),t.id=this.tsParseEntityName(0)):i===2?this.raise(d.EmptyNamespaceName,this.state.startLoc):(this.raise(d.InvalidNamespaceName,this.state.startLoc,r),t.id=super.parseExprAtom())}return this.match(2)?(s||this.scope.enter(1024),this.prodParam.enter(0),t.body=this.tsParseModuleBlock(s),this.prodParam.exit(),s||this.scope.exit()):this.semicolon(),this.finishNode(t,"TSModuleDeclaration")}tsParseImportEqualsDeclaration(t,s){t.id=s||this.parseIdentifier(),this.checkIdentifier(t.id,4096),this.expect(25);let i=this.tsParseModuleReference();return t.importKind==="type"&&i.type!=="TSExternalModuleReference"&&this.raise(d.ImportAliasHasImportType,i),t.moduleReference=i,this.semicolon(),this.finishNode(t,"TSImportEqualsDeclaration")}tsIsExternalModuleReference(){return this.isContextual(115)&&this.lookaheadCharCode()===40}tsParseModuleReference(){return this.tsIsExternalModuleReference()?this.tsParseExternalModuleReference():this.tsParseEntityName(0)}tsParseExternalModuleReference(){let t=this.startNode();return this.expectContextual(115),this.expect(6),this.match(130)||this.unexpected(),t.expression=super.parseExprAtom(),this.expect(7),this.sawUnambiguousESM=!0,this.finishNode(t,"TSExternalModuleReference")}tsLookAhead(t){let s=this.state.clone(),i=t();return this.state=s,i}tsTryParseAndCatch(t){let s=this.tryParse(i=>t()||i());if(!(s.aborted||!s.node))return s.error&&(this.state=s.failState),s.node}tsTryParse(t){let s=this.state.clone(),i=t();if(i!==void 0&&i!==!1)return i;this.state=s}tsTryParseDeclare(t){if(this.isLineTerminator())return;let s=this.state.type;return this.tsInAmbientContext(()=>{switch(s){case 64:return t.declare=!0,super.parseFunctionStatement(t,!1,!1);case 76:return t.declare=!0,this.parseClass(t,!0,!1);case 122:return this.tsParseEnumDeclaration(t,{declare:!0});case 108:return this.tsParseAmbientExternalModuleDeclaration(t);case 96:if(this.state.containsEsc)return;case 71:case 70:return!this.match(71)||!this.isLookaheadContextual("enum")?(t.declare=!0,this.parseVarStatement(t,this.state.value,!0)):(this.expect(71),this.tsParseEnumDeclaration(t,{const:!0,declare:!0}));case 103:if(this.isUsing())return this.raise(d.InvalidModifierOnUsingDeclaration,this.state.startLoc,"declare"),t.declare=!0,this.parseVarStatement(t,"using",!0);break;case 92:if(this.isAwaitUsing())return this.raise(d.InvalidModifierOnAwaitUsingDeclaration,this.state.startLoc,"declare"),t.declare=!0,this.next(),this.parseVarStatement(t,"await using",!0);break;case 125:{let i=this.tsParseInterfaceDeclaration(t,{declare:!0});if(i)return i}default:if(C(s))return this.tsParseDeclaration(t,this.state.type,!0,null)}})}tsTryParseExportDeclaration(){return this.tsParseDeclaration(this.startNode(),this.state.type,!0,null)}tsParseDeclaration(t,s,i,r){switch(s){case 120:if(this.tsCheckLineTerminator(i)&&(this.match(76)||C(this.state.type)))return this.tsParseAbstractDeclaration(t,r);break;case 123:if(this.tsCheckLineTerminator(i))return this.tsParseAmbientExternalModuleDeclaration(t);break;case 124:if(this.tsCheckLineTerminator(i)&&C(this.state.type))return t.kind="namespace",this.tsParseNamespaceDeclaration(t);break;case 126:if(this.tsCheckLineTerminator(i)&&C(this.state.type))return this.tsParseTypeAliasDeclaration(t);break}}tsCheckLineTerminator(t){return t?this.hasFollowingLineBreak()?!1:(this.next(),!0):!this.isLineTerminator()}tsTryParseGenericAsyncArrowFunction(t){if(!this.match(43))return;let s=this.tsTryParseAndCatch(()=>{let i=this.startNodeAt(t);return i.typeParameters=this.tsParseTypeParameters(this.tsParseConstModifier),super.parseFunctionParams(i),i.returnType=this.tsTryParseTypeOrTypePredicateAnnotation(),this.expect(15),i});if(s)return super.parseArrowExpression(s,null,!0)}tsParseTypeArgumentsInExpression(){if(this.reScan_lt()===43)return this.tsParseTypeArguments()}tsParseTypeArguments(){let t=this.startNode();return t.params=this.tsInType(()=>this.tsInTopLevelContext(()=>(this.expect(43),this.tsParseDelimitedList("TypeParametersOrArguments",this.tsParseType.bind(this))))),t.params.length===0?this.raise(d.EmptyTypeArguments,t):!this.state.inType&&this.curContext()===E.brace&&this.reScan_lt_gt(),this.expect(44),this.finishNode(t,"TSTypeParameterInstantiation")}tsIsDeclarationStart(){return ci(this.state.type)}isExportDefaultSpecifier(){return this.tsIsDeclarationStart()?!1:super.isExportDefaultSpecifier()}parseBindingElement(t,s){let i=s.length?null:this.state.startLoc,r={};this.tsParseModifiers({allowedModifiers:["public","private","protected","override","readonly"]},r);let n=r.accessibility,o=r.override,h=r.readonly;!(t&4)&&(n||h||o)&&this.raise(d.UnexpectedParameterModifier,i||s[0]);let l=this.state.startLoc,p=this.parseMaybeDefault(l);t&2&&this.parseFunctionParamType(p);let u=this.parseMaybeDefault(l,p);if(n||h||o){let f=i?this.startNodeAt(i):this.startNodeAtNode(s[0]);return s.length?f.decorators=s:this.setLoc(i),n&&(f.accessibility=n),h&&(f.readonly=h),o&&(f.override=o),u.type!=="Identifier"&&u.type!=="AssignmentPattern"&&this.raise(d.UnsupportedParameterPropertyKind,i||s[0]),f.parameter=u,this.finishNode(f,"TSParameterProperty")}return s.length&&(p.decorators=s),u}isSimpleParameter(t){return t.type==="TSParameterProperty"&&super.isSimpleParameter(t.parameter)||super.isSimpleParameter(t)}tsDisallowOptionalPattern(t){for(let s of t.params)s.type!=="Identifier"&&s.optional&&!this.state.isAmbientContext&&this.raise(d.PatternIsOptional,s)}setArrowFunctionParameters(t,s,i){super.setArrowFunctionParameters(t,s,i),this.tsDisallowOptionalPattern(t)}parseFunctionBodyAndFinish(t,s,i=!1){this.match(10)&&(t.returnType=this.tsParseTypeOrTypePredicateAnnotation(10));let r=s==="FunctionDeclaration"?"TSDeclareFunction":s==="ClassMethod"||s==="ClassPrivateMethod"?"TSDeclareMethod":void 0;if(r&&!this.match(2)&&this.isLineTerminator()){if(r==="TSDeclareMethod"&&t.kind==="constructor")for(let n of t.params)n.type==="TSParameterProperty"?this.raise(d.UnexpectedParameterModifier,n):n.type==="AssignmentPattern"&&this.raise(d.UnexpectedParameterInitializer,n);else for(let n of t.params)n.type==="AssignmentPattern"&&this.raise(d.UnexpectedParameterInitializer,n);return this.finishNode(t,r)}return r&&this.state.isAmbientContext&&(this.raise(d.DeclareFunctionHasImplementation,this.state.startLoc),r==="TSDeclareFunction"&&t.declare)?super.parseFunctionBodyAndFinish(t,r,i):(this.tsDisallowOptionalPattern(t),super.parseFunctionBodyAndFinish(t,s,i))}registerFunctionStatementId(t){!t.body&&t.id?this.checkIdentifier(t.id,1024):super.registerFunctionStatementId(t)}tsCheckForInvalidTypeCasts(t){t.forEach(s=>{s?.type==="TSTypeCastExpression"&&this.raise(d.UnexpectedTypeAnnotation,s.typeAnnotation)})}toReferencedList(t,s){return this.tsCheckForInvalidTypeCasts(t),t}parseArrayLike(t,s){let i=super.parseArrayLike(t,s);return i.type==="ArrayExpression"&&this.tsCheckForInvalidTypeCasts(i.elements),i}parseSubscript(t,s,i,r){if(!this.hasPrecedingLineBreak()&&this.match(31)){this.state.canStartJSXElement=!1,this.next();let o=this.startNodeAt(s);return o.expression=t,this.finishNode(o,"TSNonNullExpression")}let n=!1;if(this.match(14)&&this.lookaheadCharCode()===60){if(i)return r.stop=!0,t;r.optionalChainMember=n=!0,this.next()}if(this.match(43)||this.match(47)){let o,h=this.tsTryParseAndCatch(()=>{if(!i&&this.atPossibleAsyncArrow(t)){let f=this.tsTryParseGenericAsyncArrowFunction(s);if(f)return r.stop=!0,f}let l=this.tsParseTypeArgumentsInExpression();if(!l)return;if(n&&!this.match(6)){o=this.state.curPosition();return}if($t(this.state.type)){let f=super.parseTaggedTemplateExpression(t,s,r);return f.typeArguments=l,f}if(!i&&this.eat(6)){let f=this.startNodeAt(s);return f.callee=t,f.arguments=this.parseCallExpressionArguments(),this.tsCheckForInvalidTypeCasts(f.arguments),f.typeArguments=l,r.optionalChainMember&&(f.optional=n),this.finishCallExpression(f,r.optionalChainMember)}let p=this.state.type;if(p===44||p===48||p!==6&&p!==89&&p!==116&&ct(p)&&!this.hasPrecedingLineBreak())return;let u=this.startNodeAt(s);return u.expression=t,u.typeArguments=l,this.finishNode(u,"TSInstantiationExpression")});if(o&&this.unexpected(o,6),h)return h.type==="TSInstantiationExpression"&&((this.match(12)||this.match(14)&&this.lookaheadCharCode()!==40)&&this.raise(d.InvalidPropertyAccessAfterInstantiationExpression,this.state.startLoc),!this.match(12)&&!this.match(14)&&(h.expression=super.stopParseSubscript(t,r))),h}return super.parseSubscript(t,s,i,r)}parseNewCallee(t){super.parseNewCallee(t);let{callee:s}=t;s.type==="TSInstantiationExpression"&&!s.extra?.parenthesized&&(t.typeArguments=s.typeArguments,t.callee=s.expression)}parseExprOp(t,s,i){let r;if(St(54)>i&&!this.hasPrecedingLineBreak()&&(this.isContextual(89)||(r=this.isContextual(116)))){let n=this.startNodeAt(s);n.expression=t,n.typeAnnotation=this.tsInType(()=>(this.next(),this.match(71)?(r&&this.raise(c.UnexpectedKeyword,this.state.startLoc,{keyword:"const"}),this.tsParseTypeReference()):this.tsParseType()));let o=this.finishNode(n,r?"TSSatisfiesExpression":"TSAsExpression");return this.reScan_lt_gt(),this.parseExprOp(o,s,i)}return super.parseExprOp(t,s,i)}checkReservedWord(t,s,i,r){this.state.isAmbientContext||super.checkReservedWord(t,s,i,r)}checkDuplicateExports(){}isPotentialImportPhase(t){if(super.isPotentialImportPhase(t))return!0;if(this.isContextual(126)){let s=this.lookaheadCharCode();return t?s===123||s===42:s!==61}return!t&&this.isContextual(83)}applyImportPhase(t,s,i,r){super.applyImportPhase(t,s,i,r),s?t.exportKind=i==="type"?"type":"value":t.importKind=i==="type"||i==="typeof"?i:"value"}parseImport(t){if(this.match(130))return t.importKind="value",this.scope.inTSNamespace&&this.raise(d.ImportInTSNamespace,t),super.parseImport(t);let s;if(C(this.state.type)&&this.lookaheadCharCode()===61){t.importKind="value";let i=this.tsParseImportEqualsDeclaration(t);return this.scope.inTSNamespace&&i.moduleReference.type==="TSExternalModuleReference"&&this.raise(d.ImportInTSNamespace,t),i}else if(this.isContextual(126)){let i=this.parseMaybeImportPhase(t,!1);if(this.lookaheadCharCode()===61)return this.scope.inTSNamespace&&this.raise(d.ImportInTSNamespace,t),this.tsParseImportEqualsDeclaration(t,i);s=super.parseImportSpecifiersAndAfter(t,i)}else s=super.parseImport(t);return s.importKind==="type"&&s.specifiers.length>1&&s.specifiers[0].type==="ImportDefaultSpecifier"?this.raise(d.TypeImportCannotSpecifyDefaultAndNamed,s):this.scope.inTSNamespace&&this.raise(d.ImportInTSNamespace,s),s}parseExport(t,s){if(this.match(79)){let i=this.startNode();this.next();let r=null;this.isContextual(126)&&this.isPotentialImportPhase(!1)?r=this.parseMaybeImportPhase(i,!1):i.importKind="value";let n=this.tsParseImportEqualsDeclaration(i,r);return t.attributes=[],t.declaration=n,t.exportKind="value",t.source=null,t.specifiers=[],this.finishNode(t,"ExportNamedDeclaration")}else if(this.eat(25)){let i=t;return i.expression=super.parseExpression(),this.semicolon(),this.sawUnambiguousESM=!0,this.scope.inTSNamespace&&this.raise(d.ExportAssignmentInTSNamespace,i),this.finishNode(i,"TSExportAssignment")}else if(this.eatContextual(89)){let i=t;return this.expectContextual(124),i.id=this.parseIdentifier(),this.checkIdentifier(i.id,8201),this.semicolon(),this.scope.inTSNamespace&&this.raise(d.NamespaceExportInTSNamespace,i),this.finishNode(i,"TSNamespaceExportDeclaration")}else{let i=super.parseExport(t,s);return this.scope.inTSNamespace&&(i.type!=="ExportNamedDeclaration"||i.source||!i.declaration&&!this.state.isAmbientContext)&&this.raise(d.ExportInTSNamespace,i),i}}isAbstractClass(){return this.isContextual(120)&&this.isLookaheadContextual("class")}parseExportDefaultExpression(){if(this.isAbstractClass()){let t=this.startNode();return this.next(),t.abstract=!0,this.parseClass(t,!0,!0)}if(this.match(125)){let t=this.tsParseInterfaceDeclaration(this.startNode());if(t)return t}return super.parseExportDefaultExpression()}parseVarStatement(t,s,i=!1){let{isAmbientContext:r}=this.state,n=super.parseVarStatement(t,s,i||r);if(r&&!t.declare&&(s==="using"||s==="await using"))return this.raiseOverwrite(d.UsingDeclarationInAmbientContext,t,s),n;for(let o of n.declarations){let{id:h,init:l,definite:p}=o;p&&(l?this.raise(d.DeclaratorDefiniteAssertionWithInitializer,h):h.typeAnnotation||this.raise(d.DeclaratorDefiniteAssertionRequiresTypeAnnotation,h)),r&&l&&(s==="var"||s==="let"||h.typeAnnotation?this.raise(d.InitializerNotAllowedInAmbientContext,l):Ji(l,this.hasPlugin("estree"))||this.raise(d.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference,l))}return n}parseStatementContent(t,s){let i=!!(t&2);if(!this.state.containsEsc)switch(this.state.type){case 71:{if(this.isLookaheadContextual("enum")){let r=this.startNode();return this.next(),this.tsParseEnumDeclaration(r,{const:!0})}break}case 120:case 121:{if(this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()){let r=this.state.type,n=this.startNode();this.next();let o=r===121?this.tsTryParseDeclare(n):this.tsParseAbstractDeclaration(n,s);return o?(r===121&&(o.declare=!0),o):(n.expression=this.createIdentifier(this.startNodeAtNode(n),r===121?"declare":"abstract"),this.semicolon(!1),this.finishNode(n,"ExpressionStatement"))}break}case 122:return this.tsParseEnumDeclaration(this.startNode());case 108:{if(this.lookaheadCharCode()===123){let n=this.startNode();return this.tsParseAmbientExternalModuleDeclaration(n)}break}case 125:{let r=this.tsParseInterfaceDeclaration(this.startNode());if(r)return i||this.raise(d.UnexpectedTypeDeclaration,r,"interface"),r;break}case 123:{if(this.nextTokenIsStringLiteralOnSameLine()){let r=this.startNode();return this.next(),this.tsParseDeclaration(r,123,!1,s)}else if(this.nextTokenIsIdentifierOnSameLine()){this.raise(d.InlineModuleDeclarationMustUseString,this.state.startLoc);let r=this.startNode();return this.next(),this.tsParseDeclaration(r,124,!1,s)}break}case 124:{if(this.nextTokenIsIdentifierOnSameLine()){let r=this.startNode();return this.next(),this.tsParseDeclaration(r,124,!1,s)}break}case 126:{if(this.nextTokenIsIdentifierOnSameLine()){let r=this.startNode();return i||this.raise(d.UnexpectedTypeDeclaration,r,"type"),this.next(),this.tsParseTypeAliasDeclaration(r)}break}}return super.parseStatementContent(t,s)}parseAccessModifier(){return this.tsParseModifier(["public","protected","private"])}tsHasSomeModifiers(t,s){return s.some(i=>Xe(i)?t.accessibility===i:!!t[i])}tsIsStartOfStaticBlocks(){return this.isContextual(102)&&this.lookaheadCharCode()===123}parseClassMember(t,s,i){let r=["declare","private","public","protected","override","abstract","readonly","static"];this.tsParseModifiers({allowedModifiers:r,disallowedModifiers:["in","out"],stopOnStartOfClassStaticBlock:!0,errorTemplate:d.InvalidModifierOnTypeParameterPositions},s);let n=()=>{this.tsIsStartOfStaticBlocks()?(this.next(),this.next(),this.tsHasSomeModifiers(s,r)&&this.raise(d.StaticBlockCannotHaveModifier,this.state.curPosition()),super.parseClassStaticBlock(t,s)):this.parseClassMemberWithIsStatic(t,s,i,!!s.static)};s.declare?this.tsInAmbientContext(n):n(),s.decorators&&s.decorators.length>0&&!this.hasPlugin("decorators-legacy")&&(s.type==="TSAbstractMethodDefinition"||s.type==="TSDeclareMethod"?this.raise(d.DecoratorAbstractMethod,s,{kind:"abstract method"}):(s.type==="ClassProperty"&&s.abstract||s.type==="ClassProperty"&&s.declare||s.type==="TSAbstractPropertyDefinition"||s.type==="PropertyDefinition"&&s.declare)&&this.raise(d.DecoratorAbstractMethod,s,{kind:s.declare?"declare field":"abstract field"}))}parseClassMemberWithIsStatic(t,s,i,r){let n=this.tsTryParseIndexSignature(s);if(n){t.body.push(n),s.abstract&&this.raise(d.IndexSignatureHasAbstract,s),s.accessibility&&this.raise(d.IndexSignatureHasAccessibility,s,{modifier:s.accessibility}),s.declare&&this.raise(d.IndexSignatureHasDeclare,s),s.override&&this.raise(d.IndexSignatureHasOverride,s);return}!this.state.inAbstractClass&&s.abstract&&this.raise(d.NonAbstractClassHasAbstractMethod,s),s.override&&(i.hadSuperClass||this.raise(d.OverrideNotInSubClass,s)),super.parseClassMemberWithIsStatic(t,s,i,r)}parsePostMemberNameModifiers(t){this.eat(13)&&(t.optional=!0),t.readonly&&this.match(6)&&this.raise(d.ClassMethodHasReadonly,t),t.declare&&this.match(6)&&this.raise(d.ClassMethodHasDeclare,t)}shouldParseExportDeclaration(){return this.tsIsDeclarationStart()?!0:super.shouldParseExportDeclaration()}parseConditional(t,s,i){if(!this.match(13))return t;if(i!=null){let o=this.lookaheadCharCode();if(o===44||o===61||o===58||o===41)return this.setOptionalParametersError(i),t}this.next();let r=this.startNodeAt(s);r.test=t;let n=this.state.inConditionalConsequent;return this.state.inConditionalConsequent=!0,r.consequent=this.parseMaybeAssignAllowIn(),this.state.inConditionalConsequent=n,this.expect(10),r.alternate=this.parseMaybeAssign(),this.finishNode(r,"ConditionalExpression")}parseParenItem(t,s){let i=super.parseParenItem(t,s);if(this.eat(13)&&(i.optional=!0,this.resetEndLocation(t)),this.match(10)){let r=this.startNodeAt(s);return r.expression=t,r.typeAnnotation=this.tsParseTypeAnnotation(),this.finishNode(r,"TSTypeCastExpression")}return t}parseExportDeclaration(t){if(!this.state.isAmbientContext&&this.isContextual(121))return this.tsInAmbientContext(()=>this.parseExportDeclaration(t));let s=this.state.startLoc,i=this.eatContextual(121);if(i&&(this.isContextual(121)||!this.shouldParseExportDeclaration()))throw this.raise(d.ExpectedAmbientAfterExportDeclare,this.state.startLoc);let n=C(this.state.type)&&this.tsTryParseExportDeclaration()||super.parseExportDeclaration(t);return n?((n.type==="TSInterfaceDeclaration"||n.type==="TSTypeAliasDeclaration"||i)&&(t.exportKind="type"),i&&n.type!=="TSImportEqualsDeclaration"&&(this.resetStartLocation(n,s),n.declare=!0),n):null}parseClassId(t,s,i,r){if((!s||i)&&this.isContextual(109)){t.id=null;return}super.parseClassId(t,s,i,t.declare?1024:8331);let n=this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);n&&(t.typeParameters=n)}parseClassPropertyAnnotation(t){t.optional||(this.eat(31)?t.definite=!0:this.eat(13)&&(t.optional=!0));let s=this.tsTryParseTypeAnnotation();s&&(t.typeAnnotation=s),t.definite&&(this.match(25)?this.raise(d.DeclaratorDefiniteAssertionWithInitializer,t):s||this.raise(d.DeclaratorDefiniteAssertionRequiresTypeAnnotation,t))}parseClassProperty(t){if(this.parseClassPropertyAnnotation(t),this.state.isAmbientContext&&!(t.readonly&&!t.typeAnnotation)&&this.match(25)&&this.raise(d.DeclareClassFieldHasInitializer,this.state.startLoc),t.abstract&&this.match(25)){let{key:s}=t;this.raise(d.AbstractPropertyHasInitializer,this.state.startLoc,{propertyName:s.type==="Identifier"&&!t.computed?s.name:`[${this.input.slice(this.offsetToSourcePos(s.start),this.offsetToSourcePos(s.end))}]`})}return super.parseClassProperty(t)}parseClassPrivateProperty(t){return t.abstract&&this.raise(d.PrivateElementHasAbstract,t),t.accessibility&&this.raise(d.PrivateElementHasAccessibility,t,{modifier:t.accessibility}),this.parseClassPropertyAnnotation(t),super.parseClassPrivateProperty(t)}parseClassAccessorProperty(t){return this.parseClassPropertyAnnotation(t),t.optional&&this.raise(d.AccessorCannotBeOptional,t),super.parseClassAccessorProperty(t)}pushClassMethod(t,s,i,r,n,o){let h=this.tsTryParseTypeParameters(this.tsParseConstModifier);h&&n&&this.raise(d.ConstructorHasTypeParameters,h);let{declare:l=!1,kind:p}=s;l&&(p==="get"||p==="set")&&this.raise(d.DeclareAccessor,s,{kind:p}),h&&(s.typeParameters=h),super.pushClassMethod(t,s,i,r,n,o)}pushClassPrivateMethod(t,s,i,r){let n=this.tsTryParseTypeParameters(this.tsParseConstModifier);n&&(s.typeParameters=n),super.pushClassPrivateMethod(t,s,i,r)}declareClassPrivateMethodInScope(t,s){t.type!=="TSDeclareMethod"&&(t.type==="MethodDefinition"&&t.value.body==null||super.declareClassPrivateMethodInScope(t,s))}parseClassSuper(t){if(super.parseClassSuper(t),t.superClass)if(t.superClass.type==="TSInstantiationExpression"){let s=t.superClass,i=s.expression;this.takeSurroundingComments(i,i.start,i.end);let r=s.typeArguments;this.takeSurroundingComments(r,r.start,r.end),t.superClass=i,t.superTypeArguments=r}else(this.match(43)||this.match(47))&&(t.superTypeArguments=this.tsParseTypeArgumentsInExpression());this.eatContextual(109)&&(t.implements=this.tsParseHeritageClause("implements"))}parseObjPropValue(t,s,i,r,n,o,h){let l=this.tsTryParseTypeParameters(this.tsParseConstModifier);return l&&(t.typeParameters=l),super.parseObjPropValue(t,s,i,r,n,o,h)}parseFunctionParams(t,s){let i=this.tsTryParseTypeParameters(this.tsParseConstModifier);i&&(t.typeParameters=i),super.parseFunctionParams(t,s)}parseVarId(t,s){super.parseVarId(t,s),t.id.type==="Identifier"&&!this.hasPrecedingLineBreak()&&this.eat(31)&&(t.definite=!0);let i=this.tsTryParseTypeAnnotation();i&&(t.id.typeAnnotation=i,this.resetEndLocation(t.id))}parseAsyncArrowFromCallExpression(t,s){return this.match(10)&&(t.returnType=this.tsParseTypeAnnotation()),super.parseAsyncArrowFromCallExpression(t,s)}parseMaybeAssign(t,s){let i,r,n;if(this.hasPlugin("jsx")&&(this.match(138)||this.match(43))){if(i=this.state.clone(),r=this.tryParse(()=>super.parseMaybeAssign(t,s),i),!r.error)return r.node;let{context:l}=this.state,p=l[l.length-1];(p===E.j_oTag||p===E.j_expr)&&l.pop()}if(!r?.error&&!this.match(43))return super.parseMaybeAssign(t,s);(!i||i===this.state)&&(i=this.state.clone());let o,h=this.tryParse(l=>{o=this.tsParseTypeParameters(this.tsParseConstModifier);let p=super.parseMaybeAssign(t,s);if((p.type!=="ArrowFunctionExpression"||p.extra?.parenthesized)&&l(),o?.params.length!==0&&this.resetStartLocationFromNode(p,o),p.typeParameters=o,this.hasPlugin("jsx")&&p.typeParameters.params.length===1&&!p.typeParameters.extra?.trailingComma){let u=p.typeParameters.params[0];u.constraint||this.raise(d.SingleTypeParameterWithoutTrailingComma,this.optionFlags&256?O(u.loc.end,1):u,{typeParameterName:u.name.name})}return p},i);if(!h.error&&!h.aborted)return o&&this.reportReservedArrowTypeParam(o),h.node;if(!r&&(Je(!this.hasPlugin("jsx")),n=this.tryParse(()=>super.parseMaybeAssign(t,s),i),!n.error))return n.node;if(r?.node)return this.state=r.failState,r.node;if(h.node)return this.state=h.failState,o&&this.reportReservedArrowTypeParam(o),h.node;if(n?.node)return this.state=n.failState,n.node;throw r?.error||h.error||n?.error}reportReservedArrowTypeParam(t){t.params.length===1&&!t.params[0].constraint&&!t.extra?.trailingComma&&this.getPluginOption("typescript","disallowAmbiguousJSXLike")&&this.raise(d.ReservedArrowTypeParam,t)}parseMaybeUnary(t,s){return!this.hasPlugin("jsx")&&this.match(43)?this.tsParseTypeAssertion():super.parseMaybeUnary(t,s)}parseArrow(t){if(this.match(10)){let s=this.tryParse(i=>{let r=this.tsParseTypeOrTypePredicateAnnotation(10);return(this.canInsertSemicolon()||!this.match(15))&&i(),r});if(s.aborted)return;s.thrown||(s.error&&(this.state=s.failState),t.returnType=s.node)}return super.parseArrow(t)}parseFunctionParamType(t){this.eat(13)&&(t.optional=!0);let s=this.tsTryParseTypeAnnotation();return s&&(t.typeAnnotation=s),this.resetEndLocation(t),t}isAssignable(t,s){switch(t.type){case"TSTypeCastExpression":return this.isAssignable(t.expression,s);case"TSParameterProperty":return!0;default:return super.isAssignable(t,s)}}toAssignable(t,s=!1){switch(t.type){case"ParenthesizedExpression":this.toAssignableParenthesizedExpression(t,s);break;case"TSAsExpression":case"TSSatisfiesExpression":case"TSNonNullExpression":case"TSTypeAssertion":s?this.expressionScope.recordArrowParameterBindingError(d.UnexpectedTypeCastInParameter,t):this.raise(d.UnexpectedTypeCastInParameter,t),this.toAssignable(t.expression,s);break;case"AssignmentExpression":!s&&t.left.type==="TSTypeCastExpression"&&(t.left=this.typeCastToParameter(t.left));default:super.toAssignable(t,s)}}toAssignableParenthesizedExpression(t,s){switch(t.expression.type){case"TSAsExpression":case"TSSatisfiesExpression":case"TSNonNullExpression":case"TSTypeAssertion":case"ParenthesizedExpression":this.toAssignable(t.expression,s);break;default:super.toAssignable(t,s)}}checkToRestConversion(t,s){switch(t.type){case"TSAsExpression":case"TSSatisfiesExpression":case"TSTypeAssertion":case"TSNonNullExpression":this.checkToRestConversion(t.expression,!1);break;default:super.checkToRestConversion(t,s)}}isValidLVal(t,s,i,r){switch(t){case"TSTypeCastExpression":return!0;case"TSParameterProperty":return"parameter";case"TSNonNullExpression":return"expression";case"TSAsExpression":case"TSSatisfiesExpression":case"TSTypeAssertion":return(r!==64||!i)&&["expression",!0];default:return super.isValidLVal(t,s,i,r)}}parseBindingAtom(){return this.state.type===74?this.parseIdentifier(!0):super.parseBindingAtom()}parseMaybeDecoratorArguments(t,s){if(this.match(43)||this.match(47)){let i=this.tsParseTypeArgumentsInExpression();if(this.match(6)){let r=super.parseMaybeDecoratorArguments(t,s);return r.typeArguments=i,r}this.unexpected(null,6)}return super.parseMaybeDecoratorArguments(t,s)}checkCommaAfterRest(t){return this.state.isAmbientContext&&this.match(8)&&this.lookaheadCharCode()===t?(this.next(),!1):super.checkCommaAfterRest(t)}isClassMethod(){return this.match(43)||super.isClassMethod()}isClassProperty(){return this.match(31)||this.match(10)||super.isClassProperty()}parseMaybeDefault(t,s){let i=super.parseMaybeDefault(t,s);return i.type==="AssignmentPattern"&&i.typeAnnotation&&i.right.start<i.typeAnnotation.start&&this.raise(d.TypeAnnotationAfterAssign,i.typeAnnotation),i}getTokenFromCode(t){if(this.state.inType){if(t===62){this.finishOp(44,1);return}if(t===60){this.finishOp(43,1);return}}super.getTokenFromCode(t)}reScan_lt_gt(){let{type:t}=this.state;t===43?(this.state.pos-=1,this.readToken_lt()):t===44&&(this.state.pos-=1,this.readToken_gt())}reScan_lt(){let{type:t}=this.state;return t===47?(this.state.pos-=2,this.finishOp(43,1),43):t}toAssignableListItem(t,s,i){let r=t[s];r.type==="TSTypeCastExpression"&&(t[s]=this.typeCastToParameter(r)),super.toAssignableListItem(t,s,i)}typeCastToParameter(t){return t.expression.typeAnnotation=t.typeAnnotation,this.resetEndLocationFromNode(t.expression,t.typeAnnotation),t.expression}shouldParseArrow(t){return this.match(10)?t.every(s=>this.isAssignable(s,!0)):super.shouldParseArrow(t)}shouldParseAsyncArrow(){return this.match(10)?!this.state.inConditionalConsequent:super.shouldParseAsyncArrow()}parseParenAndDistinguishExpression(t){let s=this.state.inConditionalConsequent;this.state.inConditionalConsequent=!1;let i=super.parseParenAndDistinguishExpression(t);return this.state.inConditionalConsequent=s,i}canHaveLeadingDecorator(){return super.canHaveLeadingDecorator()||this.isAbstractClass()}jsxParseOpeningElementAfterName(t){if(this.match(43)||this.match(47)){let s=this.tsTryParseAndCatch(()=>this.tsParseTypeArgumentsInExpression());s&&(t.typeArguments=s)}return super.jsxParseOpeningElementAfterName(t)}getGetterSetterExpectedParamCount(t){let s=super.getGetterSetterExpectedParamCount(t),r=this.getObjectOrClassMethodParams(t)[0];return r&&this.isThisParam(r)?s+1:s}parseCatchClauseParam(){let t=super.parseCatchClauseParam(),s=this.tsTryParseTypeAnnotation();return s&&(t.typeAnnotation=s,this.resetEndLocation(t)),t}tsInAmbientContext(t){let{isAmbientContext:s,strict:i}=this.state;this.state.isAmbientContext=!0,this.state.strict=!1;try{return t()}finally{this.state.isAmbientContext=s,this.state.strict=i}}parseClass(t,s,i){let r=this.state.inAbstractClass;this.state.inAbstractClass=!!t.abstract;try{return super.parseClass(t,s,i)}finally{this.state.inAbstractClass=r}}tsParseAbstractDeclaration(t,s){if(this.match(76))return t.abstract=!0,this.maybeTakeDecorators(s,this.parseClass(t,!0,!1));if(this.isContextual(125))return this.hasFollowingLineBreak()?null:(t.abstract=!0,this.raise(d.NonClassMethodPropertyHasAbstractModifier,t),this.tsParseInterfaceDeclaration(t));throw this.unexpected(null,76)}parseMethod(t,s,i,r,n,o,h){let l=super.parseMethod(t,s,i,r,n,o,h);if((l.abstract||l.type==="TSAbstractMethodDefinition")&&(this.hasPlugin("estree")?l.value:l).body){let{key:f}=l;this.raise(d.AbstractMethodHasImplementation,l,{methodName:f.type==="Identifier"&&!l.computed?f.name:`[${this.input.slice(this.offsetToSourcePos(f.start),this.offsetToSourcePos(f.end))}]`})}return l}tsParseTypeParameterName(){return this.parseIdentifier()}shouldParseAsAmbientContext(){return!!this.getPluginOption("typescript","dts")}parse(){return this.shouldParseAsAmbientContext()&&(this.state.isAmbientContext=!0),super.parse()}getExpression(){return this.shouldParseAsAmbientContext()&&(this.state.isAmbientContext=!0),super.getExpression()}parseExportSpecifier(t,s,i,r){return!s&&r?(this.parseTypeOnlyImportExportSpecifier(t,!1,i),this.finishNode(t,"ExportSpecifier")):(t.exportKind="value",super.parseExportSpecifier(t,s,i,r))}parseImportSpecifier(t,s,i,r,n){return!s&&r?(this.parseTypeOnlyImportExportSpecifier(t,!0,i),this.finishNode(t,"ImportSpecifier")):(t.importKind="value",super.parseImportSpecifier(t,s,i,r,i?4098:4096))}parseTypeOnlyImportExportSpecifier(t,s,i){let r=s?"imported":"local",n=s?"local":"exported",o=t[r],h,l=!1,p=!0,u=o.start;if(this.isContextual(89)){let m=this.parseIdentifier();if(this.isContextual(89)){let P=this.parseIdentifier();U(this.state.type)?(l=!0,o=m,h=s?this.parseIdentifier():this.parseModuleExportName(),p=!1):(h=P,p=!1)}else U(this.state.type)?(p=!1,h=s?this.parseIdentifier():this.parseModuleExportName()):(l=!0,o=m)}else U(this.state.type)&&(l=!0,s?(o=this.parseIdentifier(!0),this.isContextual(89)||this.checkReservedWord(o.name,o.start,!0,!0)):o=this.parseModuleExportName());l&&i&&this.raise(s?d.TypeModifierIsUsedInTypeImports:d.TypeModifierIsUsedInTypeExports,u),t[r]=o,t[n]=h;let f=s?"importKind":"exportKind";t[f]=l?"type":"value",p&&this.eatContextual(89)&&(t[n]=s?this.parseIdentifier():this.parseModuleExportName()),t[n]||(t[n]=this.cloneIdentifier(t[r])),s&&this.checkIdentifier(t[n],l?4098:4096)}fillOptionalPropertiesForTSESLint(t){switch(t.type){case"ExpressionStatement":t.directive??=void 0;return;case"RestElement":t.value=void 0;case"Identifier":case"ArrayPattern":case"AssignmentPattern":case"ObjectPattern":t.decorators??=[],t.optional??=!1,t.typeAnnotation??=void 0;return;case"TSParameterProperty":t.accessibility??=void 0,t.decorators??=[],t.override??=!1,t.readonly??=!1,t.static??=!1;return;case"TSEmptyBodyFunctionExpression":t.body=null;case"TSDeclareFunction":case"FunctionDeclaration":case"FunctionExpression":case"ClassMethod":case"ClassPrivateMethod":t.declare??=!1,t.returnType??=void 0,t.typeParameters??=void 0;return;case"Property":t.optional??=!1;return;case"TSMethodSignature":case"TSPropertySignature":t.optional??=!1;case"TSIndexSignature":t.accessibility??=void 0,t.readonly??=!1,t.static??=!1;return;case"TSAbstractPropertyDefinition":case"PropertyDefinition":case"TSAbstractAccessorProperty":case"AccessorProperty":t.declare??=!1,t.definite??=!1,t.readonly??=!1,t.typeAnnotation??=void 0;case"TSAbstractMethodDefinition":case"MethodDefinition":t.accessibility??=void 0,t.decorators??=[],t.override??=!1,t.optional??=!1;return;case"ClassExpression":t.id??=null;case"ClassDeclaration":t.abstract??=!1,t.declare??=!1,t.decorators??=[],t.implements??=[],t.superTypeArguments??=void 0,t.typeParameters??=void 0;return;case"TSTypeAliasDeclaration":case"VariableDeclaration":t.declare??=!1;return;case"VariableDeclarator":t.definite??=!1;return;case"TSEnumDeclaration":t.const??=!1,t.declare??=!1;return;case"TSEnumMember":t.computed??=!1;return;case"TSImportType":t.qualifier??=null,t.options??=null,t.typeArguments??=null;return;case"TSInterfaceDeclaration":t.declare??=!1,t.extends??=[];return;case"TSMappedType":t.optional??=!1,t.readonly??=void 0;return;case"TSModuleDeclaration":t.declare??=!1,t.global??=t.kind==="global";return;case"TSTypeParameter":t.const??=!1,t.in??=!1,t.out??=!1;return}}chStartsBindingIdentifierAndNotRelationalOperator(t,s){if(_(t)){if(_t.lastIndex=s,_t.test(this.input)){let i=this.codePointAtPos(_t.lastIndex);if(!G(i)&&i!==92)return!1}return!0}else return t===92}nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine(){let t=this.nextTokenInLineStart(),s=this.codePointAtPos(t);return this.chStartsBindingIdentifierAndNotRelationalOperator(s,t)}nextTokenIsStringLiteralOnSameLine(){let t=this.nextTokenInLineStart(),s=this.codePointAtPos(t);return s===34||s===39}};function Wi(a){if(a.type!=="MemberExpression")return!1;let{computed:e,property:t}=a;return e&&t.type!=="StringLiteral"&&(t.type!=="TemplateLiteral"||t.expressions.length>0)?!1:fs(a.object)}function Ji(a,e){let{type:t}=a;if(a.extra?.parenthesized)return!1;if(e){if(t==="Literal"){let{value:s}=a;if(typeof s=="string"||typeof s=="boolean")return!0}}else if(t==="StringLiteral"||t==="BooleanLiteral")return!0;return!!(us(a,e)||Xi(a,e)||t==="TemplateLiteral"&&a.expressions.length===0||Wi(a))}function us(a,e){return e?a.type==="Literal"&&(typeof a.value=="number"||"bigint"in a):a.type==="NumericLiteral"||a.type==="BigIntLiteral"}function Xi(a,e){if(a.type==="UnaryExpression"){let{operator:t,argument:s}=a;if(t==="-"&&us(s,e))return!0}return!1}function fs(a){return a.type==="Identifier"?!0:a.type!=="MemberExpression"||a.computed?!1:fs(a.object)}var Gi={ClassNameIsRequired:"A class name is required.",UnexpectedSpace:"Unexpected space in placeholder."},Ge=R`placeholders`(Gi),Yi=a=>class extends a{parsePlaceholder(t){if(this.match(129)){let s=this.startNode();return this.next(),this.assertNoSpace(),s.name=super.parseIdentifier(!0),this.assertNoSpace(),this.expect(129),this.finishPlaceholder(s,t)}}finishPlaceholder(t,s){let i=t;return(!i.expectedNode||!i.type)&&(i=this.finishNode(i,"Placeholder")),i.expectedNode=s,i}getTokenFromCode(t){t===37&&this.input.charCodeAt(this.state.pos+1)===37?this.finishOp(129,2):super.getTokenFromCode(t)}parseExprAtom(t){return this.parsePlaceholder("Expression")||super.parseExprAtom(t)}parseIdentifier(t){return this.parsePlaceholder("Identifier")||super.parseIdentifier(t)}checkReservedWord(t,s,i,r){t!==void 0&&super.checkReservedWord(t,s,i,r)}cloneIdentifier(t){let s=super.cloneIdentifier(t);return s.type==="Placeholder"&&(s.expectedNode=t.expectedNode),s}cloneStringLiteral(t){return t.type==="Placeholder"?this.cloneIdentifier(t):super.cloneStringLiteral(t)}parseBindingAtom(){return this.parsePlaceholder("Pattern")||super.parseBindingAtom()}isValidLVal(t,s,i,r){return t==="Placeholder"||super.isValidLVal(t,s,i,r)}toAssignable(t,s){t&&t.type==="Placeholder"&&t.expectedNode==="Expression"?t.expectedNode="Pattern":super.toAssignable(t,s)}chStartsBindingIdentifier(t,s){if(super.chStartsBindingIdentifier(t,s))return!0;let i=this.nextTokenStart();return this.input.charCodeAt(i)===37&&this.input.charCodeAt(i+1)===37}verifyBreakContinue(t,s){t.label?.type!=="Placeholder"&&super.verifyBreakContinue(t,s)}parseExpressionStatement(t,s){if(s.type!=="Placeholder"||s.extra?.parenthesized)return super.parseExpressionStatement(t,s);if(this.match(10)){let r=t;return r.label=this.finishPlaceholder(s,"Identifier"),this.next(),r.body=super.parseStatementOrSloppyAnnexBFunctionDeclaration(),this.finishNode(r,"LabeledStatement")}this.semicolon();let i=t;return i.name=s.name,this.finishPlaceholder(i,"Statement")}parseBlock(t,s,i){return this.parsePlaceholder("BlockStatement")||super.parseBlock(t,s,i)}parseFunctionId(t){return this.parsePlaceholder("Identifier")||super.parseFunctionId(t)}parseClass(t,s,i){let r=s?"ClassDeclaration":"ClassExpression";this.next();let n=this.state.strict,o=this.parsePlaceholder("Identifier");if(o)if(this.match(77)||this.match(129)||this.match(2))t.id=o;else{if(i||!s)return t.id=null,t.body=this.finishPlaceholder(o,"ClassBody"),this.finishNode(t,r);throw this.raise(Ge.ClassNameIsRequired,this.state.startLoc)}else this.parseClassId(t,s,i);return super.parseClassSuper(t),t.body=this.parsePlaceholder("ClassBody")||super.parseClassBody(!!t.superClass,n),this.finishNode(t,r)}parseExport(t,s){let i=this.parsePlaceholder("Identifier");if(!i)return super.parseExport(t,s);let r=t;if(!this.isContextual(94)&&!this.match(8))return r.specifiers=[],r.source=null,r.declaration=this.finishPlaceholder(i,"Declaration"),this.finishNode(r,"ExportNamedDeclaration");this.expectPlugin("exportDefaultFrom");let n=this.startNode();return n.exported=i,r.specifiers=[this.finishNode(n,"ExportDefaultSpecifier")],super.parseExport(r,s)}isExportDefaultSpecifier(){if(this.match(61)){let t=this.nextTokenStart();if(this.isUnparsedContextual(t,"from")&&this.input.startsWith(W(129),this.nextTokenStartSince(t+4)))return!0}return super.isExportDefaultSpecifier()}maybeParseExportDefaultSpecifier(t,s){return t.specifiers?.length?!0:super.maybeParseExportDefaultSpecifier(t,s)}checkExport(t){let{specifiers:s}=t;s?.length&&(t.specifiers=s.filter(i=>i.exported.type==="Placeholder")),super.checkExport(t),t.specifiers=s}parseImport(t){let s=this.parsePlaceholder("Identifier");if(!s)return super.parseImport(t);if(t.specifiers=[],!this.isContextual(94)&&!this.match(8))return t.source=this.finishPlaceholder(s,"StringLiteral"),this.semicolon(),this.finishNode(t,"ImportDeclaration");let i=this.startNodeAtNode(s);return i.local=s,t.specifiers.push(this.finishNode(i,"ImportDefaultSpecifier")),this.eat(8)&&(this.maybeParseStarImportSpecifier(t)||this.parseNamedImportSpecifiers(t)),this.expectContextual(94),t.source=this.parseImportSource(),this.semicolon(),this.finishNode(t,"ImportDeclaration")}parseImportSource(){return this.parsePlaceholder("StringLiteral")||super.parseImportSource()}assertNoSpace(){this.state.start>this.offsetToSourcePos(this.state.lastTokEndLoc.index)&&this.raise(Ge.UnexpectedSpace,this.state.lastTokEndLoc)}},Qi=a=>class extends a{parseV8Intrinsic(){if(this.match(50)){let t=this.state.startLoc,s=this.startNode();if(this.next(),C(this.state.type)){let i=this.parseIdentifierName(),r=this.createIdentifier(s,i);if(this.castNodeTo(r,"V8IntrinsicIdentifier"),this.match(6))return r}this.unexpected(t)}}parseExprAtom(t){return this.parseV8Intrinsic()||super.parseExprAtom(t)}},Ye=["fsharp","hack"],Qe=["^^","@@","^","%","#"];function Zi(a){if(a.has("decorators")&&a.has("decorators-legacy"))throw new Error("Cannot use the decorators and decorators-legacy plugin together");if(a.has("flow")&&a.has("typescript"))throw new Error("Cannot combine flow and typescript plugins.");if(a.has("placeholders")&&a.has("v8intrinsic"))throw new Error("Cannot combine placeholders and v8intrinsic plugins.");if(a.has("pipelineOperator")){let e=a.get("pipelineOperator").proposal;if(!Ye.includes(e)){let t=Ye.map(s=>`"${s}"`).join(", ");throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${t}.`)}if(e==="hack"){if(a.has("placeholders"))throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");if(a.has("v8intrinsic"))throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");let t=a.get("pipelineOperator").topicToken;if(!Qe.includes(t)){let s=Qe.map(i=>`"${i}"`).join(", ");throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${s}.`)}}}if(a.has("moduleAttributes"))throw new Error("`moduleAttributes` has been removed in Babel 8, please migrate to import attributes instead.");if(a.has("importAssertions"))throw new Error("`importAssertions` has been removed in Babel 8, please use import attributes instead.");if(a.has("deprecatedImportAssert")?console.warn("`deprecatedImportAssert` has been removed in Babel 8, please use import attributes instead."):a.has("importAttributes")&&a.get("importAttributes").deprecatedAssertSyntax&&console.warn("The 'importAttributes' plugin has been removed in Babel 8. Please migrate any usage of `assert`-style attributes to `with`."),a.has("recordAndTuple"))throw new Error("The 'recordAndTuple' plugin has been removed in Babel 8. Please remove it from your configuration.");if(a.has("asyncDoExpressions")&&!a.has("doExpressions")){let e=new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");throw e.missingPlugins="doExpressions",e}if(a.has("optionalChainingAssign")&&a.get("optionalChainingAssign").version!=="2023-07")throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option, representing the last proposal update. Currently, the only supported value is '2023-07'.");if(a.has("discardBinding")&&a.get("discardBinding").syntaxType!=="void")throw new Error("The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'.");if(a.has("decimal"))throw new Error("The 'decimal' plugin has been removed in Babel 8. Please remove it from your configuration.");if(a.has("importReflection"))throw new Error("The 'importReflection' plugin has been removed in Babel 8. Use 'sourcePhaseImports' instead, and replace 'import module' with 'import source' in your code.")}var ds={estree:ti,jsx:Li,flow:wi,typescript:Ki,v8intrinsic:Qi,placeholders:Yi},tr=Object.keys(ds),Et=class extends he{constructor(e,t,s){let i=Zs(e);super(i,t),this.options=i,this.initializeScopes(),this.plugins=s,this.filename=i.sourceFilename,this.startIndex=i.startIndex;let r=0;i.allowAwaitOutsideFunction&&(r|=1),i.allowReturnOutsideFunction&&(r|=2),i.allowImportExportEverywhere&&(r|=8),i.allowSuperOutsideMethod&&(r|=16),i.allowUndeclaredExports&&(r|=64),i.allowNewTargetOutsideFunction&&(r|=4),i.allowYieldOutsideFunction&&(r|=32),i.ranges&&(r|=128),i.locations===!0&&(r|=256),i.tokens&&(r|=512),i.createImportExpressions&&(r|=1024),i.createParenthesizedExpressions&&(r|=2048),i.errorRecovery&&(r|=4096),i.attachComment&&(r|=8192),i.annexB&&(r|=16384),this.optionFlags=r}getScopeHandler(){return ft}parse(){this.enterInitialScopes();let e=this.startNode(),t=this.startNode();this.nextToken(),e.errors=[];let s=this.parseTopLevel(e,t);return s.errors=this.state.errors,s.comments.length=this.state.commentsLen,s}};function ms(a,e){if(e?.sourceType==="unambiguous"){e={...e};try{e.sourceType="module";let t=At(e,a),s=t.parse();if(t.sawUnambiguousESM)return s;if(t.ambiguousScriptDifferentAst)try{return e.sourceType="script",At(e,a).parse()}catch{}else s.program.sourceType="script";return s}catch(t){try{return e.sourceType="script",At(e,a).parse()}catch{}throw t}}else return At(e,a).parse()}function er(a){let e={};for(let t of Object.keys(a))e[t]=es(a[t]);return e}var Zr=er(si);function At(a,e){let t=Et,s=new Map;if(a?.plugins){for(let i of a.plugins){let r,n;typeof i=="string"?r=i:[r,n]=i,s.has(r)||s.set(r,n||{})}Zi(s),t=sr(s)}return new t(a,e,s)}var Ze=new Map;function sr(a){let e=[];for(let i of tr)a.has(i)&&e.push(i);let t=e.join("|"),s=Ze.get(t);if(!s){s=Et;for(let i of e)s=ds[i](s);Ze.set(t,s)}return s}var ir=/\b(TODO|FIXME|XXX|HACK)\b|not implemented|unimplemented|placeholder\b/i;function rr(a){let e=/\.(ts|tsx|mts|cts)$/i.test(a),t=/\.(jsx|tsx)$/i.test(a)||!e,s=[e?"typescript":"flow"];return t&&s.push("jsx"),s.push("decorators-legacy","classProperties","importAttributes","explicitResourceManagement"),s}function ys(a){return/\.(js|jsx|mjs|cjs|ts|tsx|mts|cts)$/i.test(a)}function xs(a,e){let t;try{t=ms(e,{sourceType:"unambiguous",allowReturnOutsideFunction:!0,errorRecovery:!0,plugins:rr(a),attachComment:!0})}catch{return null}let s=[];for(let i of t.comments??[])ir.test(i.value)&&s.push({kind:"placeholder",line:i.loc?.start?.line??0,detail:`//${i.value.replace(/\s+/g," ").trimEnd()}`.slice(0,160)});return Ae(t.program,(i,r)=>{if(!hr(i))return;let n=lr(i,r);if(!n)return;let o=i.body;if(!o||o.type!=="BlockStatement")return;let h=i.loc?.start?.line??0,l=(i.params??[]).map(u=>Te(u)).filter(Boolean);if(o.body.length===0){s.push({kind:"empty-function",line:h,detail:`empty function body: ${n}()`});return}if(o.body.length===1&&o.body[0].type==="ReturnStatement"){let u=o.body[0].argument;l.length>0&&Nt(u)&&s.push({kind:"bare-constant-return",line:h,detail:`${n}(${l.join(", ")}) ignores its input and returns the constant ${gs(u)}`})}let p=ar(i,o,l,n);p&&s.push({...p,line:h})}),s}function ar(a,e,t,s){if(t.length===0||e.body.length>4)return null;let i=null,r=!1,n=!1;for(let l of e.body){if(l.type==="VariableDeclaration")for(let p of l.declarations)nr(p.init)&&(i=p.init);if(l.type==="IfStatement"){let p=Pe(l.test)||mt(l.test),u=Pe(l.consequent);p&&(u||mt(l.test))&&(r=!0)}l.type==="ReturnStatement"&&Nt(l.argument)&&(n=!0)}if(!r||!n)return null;let o=i?or(i):null,h=o!==null?` of ${o} pre-set answers`:"";return{kind:"hardcoded-lookup",detail:`${s}(${t.join(", ")}) looks up a literal table${h} and falls back to a constant \u2014 it may only work for known inputs`}}function nr(a){if(!a)return!1;if(a.type==="ObjectExpression"){let e=a.properties.filter(t=>t.type==="ObjectProperty");return e.length>=2&&e.every(t=>Nt(t.value))}if(a.type==="NewExpression"&&a.callee?.name==="Map"){let e=a.arguments?.[0];return e?.type==="ArrayExpression"&&e.elements.length>=2}return!1}function or(a){return a.type==="ObjectExpression"?a.properties.filter(e=>e.type==="ObjectProperty").length:a.type==="NewExpression"?a.arguments?.[0]?.elements?.length??null:null}function Pe(a){if(!a||typeof a!="object")return!1;if(a.type==="MemberExpression"&&a.computed||a.type==="CallExpression"&&a.callee?.property?.name==="get")return!0;for(let e of["left","right","argument","object","test","consequent","alternate"])if(Pe(a[e]))return!0;return!1}function mt(a){return!a||typeof a!="object"?!1:a.type==="BinaryExpression"&&a.operator==="in"?!0:mt(a.left)||mt(a.right)||mt(a.argument)}function Nt(a){return!a||a.type==="Identifier"&&a.name==="undefined"||a.type==="NullLiteral"?!1:["StringLiteral","NumericLiteral","BooleanLiteral","BigIntLiteral"].includes(a.type)||a.type==="TemplateLiteral"&&a.expressions.length===0?!0:a.type==="UnaryExpression"&&a.operator==="-"?Nt(a.argument):!1}function gs(a){return a?a.type==="StringLiteral"?JSON.stringify(a.value):a.type==="TemplateLiteral"?"`\u2026`":a.type==="UnaryExpression"?`-${gs(a.argument)}`:String(a.value??a.type):"nothing"}function hr(a){return a?.type==="FunctionDeclaration"||a?.type==="FunctionExpression"||a?.type==="ArrowFunctionExpression"||a?.type==="ClassMethod"||a?.type==="ObjectMethod"}function lr(a,e){return a.id?.name?a.id.name:a.key?.name?a.key.name:e?.type==="VariableDeclarator"&&e.id?.name?e.id.name:e?.type==="ObjectProperty"&&e.key?.name?e.key.name:e?.type==="ExportDefaultDeclaration"?"default export":null}function Te(a){return a?a.type==="Identifier"?a.name:a.type==="AssignmentPattern"?Te(a.left):a.type==="RestElement"?`...${Te(a.argument)}`:a.type==="ObjectPattern"?"{\u2026}":a.type==="ArrayPattern"?"[\u2026]":"":""}function Ae(a,e,t=null){if(!(!a||typeof a!="object")){if(Array.isArray(a)){for(let s of a)Ae(s,e,t);return}typeof a.type=="string"&&e(a,t);for(let s of Object.keys(a)){if(s==="loc"||s==="leadingComments"||s==="trailingComments")continue;let i=a[s];i&&typeof i=="object"&&Ae(i,e,a)}}}var pr=/\b(TODO|FIXME|XXX|HACK)\b|not implemented|unimplemented|placeholder\b/i,ur=/(^test\/|\/test\/|\.test\.|\.spec\.|^spec\/)/i,kt="(?:\\s*:\\s*[^{=]+)?",As="(?:true|false|-?\\d+(?:\\.\\d+)?|\"[^\"\\n]*\"|'[^'\\n]*'|`[^`\\n]*`)",fr=new RegExp(`\\bfunction\\s+\\w+\\s*\\([^)]*\\)${kt}\\s*{\\s*}`,"g"),dr=new RegExp(`\\b(?:const|let|var)\\s+\\w+\\s*(?::[^=]+)?=\\s*(?:async\\s+)?(?:function\\s*\\*?\\s*\\([^)]*\\)|\\([^)]*\\)\\s*=>|\\w+\\s*=>)${kt}\\s*{\\s*}`,"g"),mr=new RegExp(`\\bfunction\\s+\\w+\\s*\\(([^)]+)\\)${kt}\\s*{\\s*return\\s+${As}\\s*;?\\s*}`,"g"),yr=new RegExp(`\\b(?:const|let|var)\\s+\\w+\\s*(?::[^=]+)?=\\s*(?:async\\s+)?(?:function\\s*\\(([^)]*)\\)|\\(([^)]+)\\)\\s*=>)${kt}\\s*{\\s*return\\s+${As}\\s*;?\\s*}`,"g");function xr(a,e){let t=a[Math.min(e,a.length-1)];return t?t.lineNo:0}function gr(a){let e=[];if(a.addedLines.length===0)return e;let t=a.addedLines.map(i=>i.text).join(`
|
|
11
|
+
`),s=i=>{let n=(t.slice(0,i).match(/\n/g)??[]).length;return xr(a.addedLines,n)};for(let i of t.matchAll(fr))e.push({kind:"empty-function",file:a.file,line:s(i.index??0),detail:`empty function body: ${i[0].replace(/\s+/g," ").trim()}`});for(let i of t.matchAll(dr))e.push({kind:"empty-function",file:a.file,line:s(i.index??0),detail:`empty function body: ${i[0].replace(/\s+/g," ").trim()}`});for(let i of t.matchAll(mr)){let r=(i[1]??"").trim();r.length!==0&&e.push({kind:"bare-constant-return",file:a.file,line:s(i.index??0),detail:`function takes parameter(s) (${r}) but body is only a bare constant return: ${i[0].replace(/\s+/g," ").trim()}`})}for(let i of t.matchAll(yr)){let r=(i[1]??i[2]??"").trim();r.length!==0&&e.push({kind:"bare-constant-return",file:a.file,line:s(i.index??0),detail:`function takes parameter(s) (${r}) but body is only a bare constant return: ${i[0].replace(/\s+/g," ").trim()}`})}return e}function Pr(a,e){if(!ys(a.file))return null;let t=Ts(e,a.file);if(!cr(t))return null;let s;try{s=Ps(t,"utf8")}catch{return null}let i=xs(a.file,s);if(i===null)return null;let r=new Set(a.addedLines.map(n=>n.lineNo));return i.filter(n=>r.has(n.line)).map(n=>({kind:n.kind,file:a.file,line:n.line,detail:n.detail}))}function bs(a,e){let t=[],s=!1;for(let i of a){let r=ur.test(i.file);if(r&&(s=!0),r)continue;let n=Pr(i,e);if(n)t.push(...n);else{for(let o of i.addedLines)pr.test(o.text)&&t.push({kind:"placeholder",file:i.file,line:o.lineNo,detail:o.text.trim()});t.push(...gr(i))}}if(s){let i=Ts(e,"package.json"),r,n=!1;try{r=JSON.parse(Ps(i,"utf8")).scripts?.test,n=!0}catch{}let o=/node\s+--test|vitest|jest|mocha|ava\b/.test(r??"");if(n&&!o){let h=r===void 0?'test file(s) were added, but package.json has no "test" script at all \u2014 these tests can never run.':`scripts.test = ${JSON.stringify(r)} does not appear to invoke a real test runner \u2014 the added test file(s) may never actually execute even though "npm test" exits 0.`;t.push({kind:"test-not-wired",file:"package.json",detail:h})}}return t}import{spawn as br}from"node:child_process";import{existsSync as v,readFileSync as Tr}from"node:fs";import{join as L}from"node:path";function nt(a,e){let t=L(a,e);if(!v(t))return null;try{return Tr(t,"utf8")}catch{return null}}function Ar(a){return v(L(a,"pnpm-lock.yaml"))?"pnpm":v(L(a,"yarn.lock"))?"yarn":v(L(a,"bun.lockb"))?"bun":"npm"}function Ss(a){let e=nt(a,"package.json");if(e)try{if(JSON.parse(e).scripts?.test){let l=Ar(a);return{command:`${l} test`,bin:l,args:["test"],ecosystem:"node"}}}catch{}let t=nt(a,"pyproject.toml"),s=nt(a,"setup.cfg"),i=v(L(a,"pytest.ini"))||v(L(a,"tox.ini"))||t!==null&&/\[tool\.pytest/.test(t)||s!==null&&/\[tool:pytest\]/.test(s),r=v(L(a,"tests"))||v(L(a,"test"));if(i||t&&r)return{command:"pytest",bin:"pytest",args:[],ecosystem:"python"};if(v(L(a,"manage.py")))return{command:"python manage.py test",bin:"python",args:["manage.py","test"],ecosystem:"django"};if(v(L(a,"go.mod")))return{command:"go test ./...",bin:"go",args:["test","./..."],ecosystem:"go"};if(v(L(a,"Cargo.toml")))return{command:"cargo test",bin:"cargo",args:["test"],ecosystem:"rust"};if(v(L(a,"mix.exs")))return{command:"mix test",bin:"mix",args:["test"],ecosystem:"elixir"};if(v(L(a,"spec"))&&v(L(a,"Gemfile")))return{command:"bundle exec rspec",bin:"bundle",args:["exec","rspec"],ecosystem:"ruby"};if(v(L(a,"Rakefile")))return{command:"rake test",bin:"rake",args:["test"],ecosystem:"ruby"};if(v(L(a,"pom.xml")))return{command:"mvn -q test",bin:"mvn",args:["-q","test"],ecosystem:"maven"};if(v(L(a,"gradlew")))return{command:"./gradlew test",bin:"./gradlew",args:["test"],ecosystem:"gradle"};let n=nt(a,"composer.json");if(n)try{if(JSON.parse(n).scripts?.test)return{command:"composer test",bin:"composer",args:["test"],ecosystem:"php"}}catch{}let o=nt(a,"Makefile")??nt(a,"makefile");return o&&/^\.PHONY:.*\btest\b|^test\s*:/m.test(o)?{command:"make test",bin:"make",args:["test"],ecosystem:"make"}:null}function Cs(a){let e=[[/^# (?:tests|pass)\s+(\d+)/m,1],[/Tests:\s+\d+\s+failed,?\s*(\d+)\s+passed,\s*(\d+)\s+total/,2],[/Tests:\s+(\d+)\s+passed,\s*(\d+)\s+total/,2],[/(\d+)\s+passing/,1],[/=+\s*(\d+) passed.*?=+/s,1],[/(\d+) passed,\s*\d+ failed/,1],[/test result:\s*\w+\.\s*(\d+) passed/,1],[/(\d+) examples?,\s*\d+ failures?/,1],[/(\d+) tests?,\s*\d+ failures?/,1],[/Tests run:\s*(\d+)/,1],[/Ran (\d+) tests?/,1]];for(let[s,i]of e){let r=a.match(s);if(r?.[i])return parseInt(r[i],10)}let t=a.match(/^--- PASS:/gm);return t?t.length:"unknown"}async function Is(a,e={}){let{skip:t=!1,timeoutMs:s=12e4}=e;if(t)return{exists:!1,ecosystem:null,command:null,ran:!1,reasonNotRun:"skipped \u2014 the diff is empty, so there is nothing to verify",exitCode:null,durationMs:null,passed:null,testCount:null,stdout:"",stderr:""};let i=Ss(a);if(!i)return{exists:!1,ecosystem:null,command:null,ran:!1,reasonNotRun:"no recognised test command (checked Node, pytest, Django, Go, Cargo, Mix, RSpec, Rake, Maven, Gradle, Composer, Make)",exitCode:null,durationMs:null,passed:null,testCount:null,stdout:"",stderr:""};let r=Date.now(),n,o,h;try{({exitCode:n,stdout:o,stderr:h}=await Cr(i.bin,i.args,a,s))}catch(u){return{exists:!0,ecosystem:i.ecosystem,command:i.command,ran:!1,reasonNotRun:`${i.command} could not be started (${u?.code==="ENOENT"?`'${i.bin}' is not installed or not on PATH`:u?.message??"unknown error"})`,exitCode:null,durationMs:null,passed:null,testCount:null,stdout:"",stderr:""}}let l=Date.now()-r,p=o+`
|
|
12
|
+
`+h;return{exists:!0,ecosystem:i.ecosystem,command:i.command,ran:!0,reasonNotRun:null,exitCode:n,durationMs:l,passed:n===0,testCount:Cs(p),stdout:o,stderr:h}}function Sr(){let a={...process.env};return delete a.NODE_TEST_CONTEXT,a}function Cr(a,e,t,s){return new Promise((i,r)=>{let n=br(a,e,{cwd:t,env:Sr(),stdio:["ignore","pipe","pipe"]}),o="",h="";n.stdout.on("data",p=>o+=p),n.stderr.on("data",p=>h+=p);let l=setTimeout(()=>n.kill("SIGTERM"),s);n.on("error",r),n.on("close",p=>{clearTimeout(l),i({exitCode:p,stdout:o,stderr:h})})})}import{appendFileSync as Ir,existsSync as wr,mkdirSync as Er,readdirSync as da,readFileSync as Nr,writeFileSync as kr}from"node:fs";import{join as be}from"node:path";var vr=3,Se=".s2s/verdicts";var j={CLEAN:0,FINDINGS:1,FAILED:2,UNVERIFIED:3,TOOL_ERROR:64};function Lr(a){let e=i=>String(Math.floor(Math.abs(i))).padStart(2,"0"),t=-a.getTimezoneOffset(),s=t>=0?"+":"-";return`${a.getFullYear()}-${e(a.getMonth()+1)}-${e(a.getDate())}T${e(a.getHours())}:${e(a.getMinutes())}:${e(a.getSeconds())}${s}${e(t/60)}:${e(t%60)}`}function Dr(a,e,t,s){if(s)return"nothing to audit \u2014 the diff is empty";let i=t,r=i===1?"finding":"findings",n=e.ran&&e.passed===!0?`tests passed (${e.testCount})`:e.ran&&e.vacuous?"tests ran but verified nothing":e.ran?`tests failed (exit ${e.exitCode})`:"tests never ran";switch(a){case"CLEAN":return`${n}, nothing flagged`;case"FINDINGS":return`${i} ${r} to check; ${n}`;case"FAILED":return i>0?`${n}, plus ${i} ${r}`:n;case"UNVERIFIED":return i>0?`${n}, plus ${i} ${r}`:`${n} \u2014 nothing was confirmed`}}function ws(a){let{toolVersion:e,range:t,filesChanged:s,testResult:i,stubFindings:r}=a,n=[],o=[],h=i.ran&&i.exitCode===0&&(i.testCount===0||i.testCount==="unknown");i.ran&&i.exitCode!==0&&n.push(`the test suite ran and failed (exit ${i.exitCode})`),i.ran||o.push(`tests never ran: ${i.reasonNotRun}`),h&&o.push(i.testCount===0?"the test command exited 0 but executed 0 tests \u2014 nothing was actually verified":"the test command exited 0 but produced no recognisable test results \u2014 nothing could be confirmed");let l=i.ran?i.exitCode!==0?!1:h?null:!0:null,p=n.length>0?"FAILED":r.length>0?"FINDINGS":o.length>0?"UNVERIFIED":"CLEAN",u={exists:i.exists,ecosystem:i.ecosystem,command:i.command,ran:i.ran,reasonNotRun:i.reasonNotRun,exitCode:i.exitCode,durationMs:i.durationMs,passed:l,testCount:i.testCount,vacuous:h},f=[...n,...r.map(m=>`${m.file}${m.line?":"+m.line:""} \u2014 ${m.kind}`),...o];return{schemaVersion:vr,tool:"s2s-verify",toolVersion:e,generatedAt:Lr(new Date),range:t,facts:{filesChanged:s,test:u},factFailures:n,factGaps:o,findings:r,verdict:t.empty?"CLEAN":p,summary:Dr(t.empty?"CLEAN":p,u,r.length,t.empty),reasons:t.empty?[]:f}}function Es(a,e){if(e==="never")return j.CLEAN;switch(a.verdict){case"FAILED":return j.FAILED;case"FINDINGS":return e==="facts"?j.CLEAN:j.FINDINGS;case"UNVERIFIED":return e==="all"?j.UNVERIFIED:j.CLEAN;case"CLEAN":return j.CLEAN}}function Ns(a,e,t,s){let i=be(a,s);Er(i,{recursive:!0});let r=be(i,`${e.generatedAt.slice(0,10)}-${t}.json`);return kr(r,JSON.stringify(e,null,2)+`
|
|
13
|
+
`),s===Se&&Mr(a),r}function Mr(a){try{let e=be(a,".gitignore"),t=wr(e)?Nr(e,"utf8"):"";if(/^\/?\.s2s\/(verdicts\/?)?\s*$/m.test(t))return;let s=t.length>0&&!t.endsWith(`
|
|
14
|
+
`)?`
|
|
15
|
+
`:"";Ir(e,`${s}
|
|
16
|
+
# s2s-verify output
|
|
17
|
+
.s2s/verdicts/
|
|
18
|
+
`)}catch{}}var S={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",reverse:"\x1B[7m",green:"\x1B[32m",amber:"\x1B[33m",red:"\x1B[31m"};function vt(a,e,t=process.env){return e.includes("--no-color")||t.NO_COLOR!==void 0&&t.NO_COLOR!==""?!1:t.FORCE_COLOR!==void 0&&t.FORCE_COLOR!==""&&t.FORCE_COLOR!=="0"?!0:!!a.isTTY}function vs(a){return(e,t)=>a?`${e}${t}${S.reset}`:t}var Or={CLEAN:S.green,UNVERIFIED:null,FINDINGS:S.amber,FAILED:S.red};function ks(a,e){if(a.verdict==="FAILED")return`${e(S.reverse+S.bold+S.red," FAILED ")} ${e(S.bold,a.summary)}`;let t=Or[a.verdict];return`${e(t?S.bold+t:S.bold,a.verdict)} ${a.summary}`}function Ls(a,e){let t=vs(e.color);if(e.quiet)return ks(a,t);let s=[],i=a.range.mode==="staged"?"staged changes":a.range.mode==="hook"?"pre-push":`${a.range.baseline}..${a.range.head}`,r=a.facts.filesChanged===1?"file":"files",n=`s2s-verify \xB7 ${i} \xB7 ${a.facts.filesChanged} ${r}`;if(s.push(a.range.mode==="hook"?t(S.amber,n):t(S.dim,n)),s.push(""),a.range.empty)s.push("\xB7 nothing to audit \u2014 the diff is empty");else{s.push("FACTS");let o=a.facts.test;if(o.exists)if(o.ran){let h=o.passed===!0?t(S.green,"\u2713"):o.passed===!1?t(S.red,"\u2717"):t(S.amber,"\u26A0"),l=o.passed===!0?"tests passed":o.passed===!1?"tests FAILED":"tests inconclusive",p=o.testCount==="unknown"?"no recognisable results":`${o.testCount} test${o.testCount===1?"":"s"}`,u=o.passed===!0?t(S.green,l):o.passed===!1?t(S.red,l):t(S.amber,l),f=" ".repeat(Math.max(1,19-l.length)),m=o.ecosystem&&o.ecosystem!=="node"?` ${t(S.dim,`(${o.ecosystem})`)}`:"";s.push(`${h} ${u}${f}${o.command}${m} \u2192 exit ${o.exitCode} \xB7 ${o.durationMs}ms \xB7 ${p}`),o.vacuous&&s.push(t(S.dim," exited 0 but verified nothing"))}else{s.push(`\xB7 tests not run ${o.command}`);for(let h of yt(o.reasonNotRun??"",70))s.push(t(S.dim,` ${h}`))}else{s.push("\xB7 no test command");for(let h of yt(o.reasonNotRun??"",70))s.push(t(S.dim,` ${h}`))}if(a.findings.length>0){s.push(""),s.push(`FINDINGS \xB7 ${a.findings.length}`);for(let h of a.findings){let l=h.line?`${h.file}:${h.line}`:h.file;s.push(`${t(S.amber,"\u26A0")} ${l} ${t(S.dim,h.kind)}`);for(let p of yt(h.detail,70))s.push(t(S.dim,` ${p}`))}}}return s.push(""),s.push(ks(a,t)),s.push(""),e.writtenPath&&s.push(t(S.dim,`\u2937 ${e.writtenPath}`)),s.push(t(S.dim,`\u2937 exit ${e.exitCode}`)),a.range.mode==="hook"&&e.exitCode!==0&&(s.push(""),s.push(t(S.red,"\u2717 push rejected by s2s-verify")),s.push(t(S.dim," review the findings above, or run: git push --no-verify (skips this check)"))),s.join(`
|
|
19
|
+
`)}function Ce(a,e,t){let s=vs(t),i=yt(`s2s-verify: ${a}`,78).map(r=>s(S.red,r));if(e)for(let r of yt(e.trim(),76))i.push(s(S.dim,` ${r}`));return i.join(`
|
|
20
|
+
`)}function yt(a,e){let t=a.split(/\s+/),s=[],i="";for(let r of t)i.length===0?i=r:i.length+1+r.length<=e?i+=" "+r:(s.push(i),i=r);return i&&s.push(i),s}import{existsSync as Fs,readFileSync as Bs,writeFileSync as Ds,chmodSync as Ms,unlinkSync as Fr}from"node:fs";import{join as Lt}from"node:path";import{execFileSync as Br}from"node:child_process";var Ie="# s2s-verify pre-push hook v2 \u2014 installed by `s2s-verify --install-hook`",Rs="# bramo-verify pre-push hook v1 \u2014 installed by `bramo-verify --install-hook`";function Us(a){try{let e=Br("git",["rev-parse","--git-path","hooks"],{cwd:a,encoding:"utf8"}).trim();return Lt(a,e)}catch{return Lt(a,".git","hooks")}}function Os(){return["#!/bin/sh",Ie,"# Runs s2s-verify on the outgoing push range. Bypass with `git push --no-verify`.","exec npx --yes s2s-verify --from-hook",""].join(`
|
|
21
|
+
`)}function js(a){let e=Us(a),t=Lt(e,"pre-push");if(Fs(t)){let s=Bs(t,"utf8");return s.includes(Ie)?{status:"already-installed",message:`pre-push hook already installed at ${t}`}:s.includes(Rs)?(Ds(t,Os()),Ms(t,493),{status:"upgraded",message:`replaced the bramo-verify pre-push hook at ${t} with the s2s-verify one`}):{status:"refused",message:`${t} already exists and was not installed by s2s-verify. Not touching it \u2014 add \`npx --yes s2s-verify --from-hook\` to it by hand, or remove it and re-run --install-hook.`}}return Ds(t,Os()),Ms(t,493),{status:"installed",message:`installed pre-push hook at ${t}`}}function _s(a){let e=Us(a),t=Lt(e,"pre-push");if(!Fs(t))return{status:"not-installed",message:`no pre-push hook found at ${t}`};let s=Bs(t,"utf8");return!s.includes(Ie)&&!s.includes(Rs)?{status:"refused",message:`${t} exists but was not installed by s2s-verify. Not removing it.`}:(Fr(t),{status:"removed",message:`removed pre-push hook at ${t}`})}var we="0.4.0",Ee=Se,jr=`s2s-verify ${we}
|
|
22
|
+
Audits a git diff and reports what it observed \u2014 never what an agent claimed.
|
|
23
|
+
|
|
24
|
+
USAGE
|
|
25
|
+
s2s-verify [<baseline>] [flags]
|
|
26
|
+
|
|
27
|
+
The argument is the BASELINE; HEAD is always the other end.
|
|
28
|
+
|
|
29
|
+
s2s-verify HEAD~1..HEAD \u2014 the last commit (default)
|
|
30
|
+
s2s-verify HEAD~3 the last three commits
|
|
31
|
+
s2s-verify main everything on this branch vs main
|
|
32
|
+
s2s-verify --staged staged changes only (for pre-commit use)
|
|
33
|
+
|
|
34
|
+
FLAGS
|
|
35
|
+
--staged Audit staged changes instead of a commit range.
|
|
36
|
+
--out <dir> Where to write the verdict JSON.
|
|
37
|
+
[default: ${Ee}]
|
|
38
|
+
--no-write Do not write a verdict file at all.
|
|
39
|
+
--json Print the verdict as JSON on stdout.
|
|
40
|
+
--quiet Print one summary line only.
|
|
41
|
+
--no-color Disable colour. Also honours NO_COLOR, and turns
|
|
42
|
+
itself off when output is piped.
|
|
43
|
+
--fail-on <policy> Which results produce a non-zero exit.
|
|
44
|
+
[default: findings]
|
|
45
|
+
facts objective failures only
|
|
46
|
+
findings objective failures + heuristic findings
|
|
47
|
+
all the above, plus "nothing was verified"
|
|
48
|
+
never always exit 0
|
|
49
|
+
--install-hook Install a pre-push hook that runs this on every push.
|
|
50
|
+
--uninstall-hook Remove that hook.
|
|
51
|
+
-h, --help Show this message.
|
|
52
|
+
-v, --version Show the version.
|
|
53
|
+
|
|
54
|
+
OUTPUT: FACTS vs FINDINGS
|
|
55
|
+
FACTS Observed directly \u2014 a real spawned process, its real exit code,
|
|
56
|
+
the file count from git. These cannot be false positives.
|
|
57
|
+
FINDINGS Heuristics, each cited file:line so you can check it in
|
|
58
|
+
seconds. Dismiss any that don't apply.
|
|
59
|
+
|
|
60
|
+
VERDICTS
|
|
61
|
+
CLEAN Tests ran, passed, verified something real; nothing flagged.
|
|
62
|
+
UNVERIFIED Nothing failed, but nothing was confirmed either.
|
|
63
|
+
FINDINGS Heuristic findings present.
|
|
64
|
+
FAILED Objective failure: the test suite ran and failed.
|
|
65
|
+
|
|
66
|
+
EXIT CODES
|
|
67
|
+
0 passed under the current --fail-on policy
|
|
68
|
+
1 heuristic findings
|
|
69
|
+
2 objective failure (tests ran and failed)
|
|
70
|
+
3 nothing could be verified (only with --fail-on all)
|
|
71
|
+
64 could not audit at all \u2014 not a git repo, bad ref, bad flag
|
|
72
|
+
|
|
73
|
+
Verdicts go to ${Ee}/<date>-<sha>.json, and that directory is
|
|
74
|
+
gitignored automatically. Timestamps are local. Zero telemetry.
|
|
75
|
+
|
|
76
|
+
Formerly bramo-verify. The bramo-verify command still works and prints a
|
|
77
|
+
one-line notice.
|
|
78
|
+
|
|
79
|
+
What it checks, every finding kind, and the verdict schema:
|
|
80
|
+
https://github.com/KiniunCorp/s2s-verify
|
|
81
|
+
`;function _r(a){return/^0+$/.test(a)}function J(a,e=null){console.error(Ce(a,e,vt(process.stderr,process.argv.slice(2)))),process.exit(j.TOOL_ERROR)}function $r(){return new Promise(a=>{if(process.stdin.isTTY){a("");return}let e="";process.stdin.setEncoding("utf8"),process.stdin.on("data",t=>e+=t),process.stdin.on("end",()=>a(e))})}function $s(a,e){let t=a.indexOf(e);if(t===-1)return;let s=a[t+1];return(s===void 0||s.startsWith("-"))&&J(`${e} requires a value.`),s}var Vr=new Set(["--staged","--out","--no-write","--json","--quiet","--no-color","--fail-on","--install-hook","--uninstall-hook","--from-hook","--help","-h","--version","-v"]);async function qr(){let a=process.argv.slice(2),e=process.cwd();(a.includes("--help")||a.includes("-h"))&&(console.log(jr),process.exit(0)),(a.includes("--version")||a.includes("-v"))&&(console.log(we),process.exit(0));let t=new Set(["--out","--fail-on"]);for(let F=0;F<a.length;F++){let B=a[F];B.startsWith("-")&&(Vr.has(B)||J(`unknown flag '${B}'. Run --help for the flag list.`),t.has(B)&&F++)}if(a.includes("--install-hook")||a.includes("--uninstall-hook")){Ot(e)||J("not inside a git repository \u2014 nothing to install a hook into.");let F=a.includes("--install-hook")?js(e):_s(e);console.log(F.message),process.exit(F.status==="refused"?j.TOOL_ERROR:0)}Ot(e)||J("not inside a git repository.");let s=$s(a,"--fail-on")??"findings";["findings","facts","all","never"].includes(s)||J(`--fail-on must be one of: facts, findings, all, never (got '${s}').`);let i=s,r=$s(a,"--out")??Ee,n=a.includes("--no-write"),o=a.includes("--json"),h=a.includes("--quiet"),l=a.includes("--from-hook"),p=a.includes("--staged"),u,f,m,P;if(l){u="hook";let B=(await $r()).split(`
|
|
82
|
+
`).find(Vs=>Vs.trim().length>0);B||J("--from-hook expects the push range on stdin (git pre-push protocol) but received none.");let xt=B.trim().split(/\s+/),Y=xt[1],Dt=xt[3];if(m=Y&&ot(e,Y)?Y:ve(e,"HEAD"),!Dt||_r(Dt))try{f=Rr("git",["symbolic-ref","refs/remotes/origin/HEAD"],{cwd:e,encoding:"utf8"}).trim()}catch{f=ot(e,`${m}~1`)?`${m}~1`:m}else f=Dt}else p?(u="staged",f="(index)",m="(worktree)"):(u="range",f=a.filter((B,xt)=>{if(B.startsWith("-"))return!1;let Y=a[xt-1];return!(Y&&t.has(Y))})[0]??"HEAD~1",m="HEAD",ot(e,f)||J(`'${f}' is not a valid ref in this repository.`,f==="HEAD~1"?" this repo may have only one commit \u2014 try --staged, or name a baseline explicitly":null),ot(e,m)||J("HEAD does not resolve to a commit in this repository."));if(u==="staged")P=Me(e);else{let{diffText:F,base:B}=De(e,f,m);P=F,f=B}let N=P.trim().length===0,k=N?[]:Oe(P),I=N?[]:bs(k,e),w=await Is(e,{skip:N}),$=ws({toolVersion:we,range:{mode:u,baseline:u==="staged"?null:f,head:u==="staged"?null:m,empty:N},filesChanged:N?0:Fe(P),testResult:w,stubFindings:I}),q=Es($,i),Ne=null;n||(Ne=Ur(e,Ns(e,$,Le(e,"HEAD"),r))),console.log(o?JSON.stringify($,null,2):Ls($,{color:vt(process.stdout,a),quiet:h,exitCode:q,writtenPath:Ne})),process.exit(q)}qr().catch(a=>{console.error(Ce(`unexpected error \u2014 ${a?.message??a}`,null,vt(process.stderr,process.argv.slice(2)))),process.exit(j.TOOL_ERROR)});
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "s2s-verify",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Free, zero-config CLI that audits a git diff and reports what it actually observed — never what an agent claimed.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"ai",
|
|
7
|
+
"agents",
|
|
8
|
+
"verification",
|
|
9
|
+
"git",
|
|
10
|
+
"diff",
|
|
11
|
+
"code-review",
|
|
12
|
+
"testing",
|
|
13
|
+
"ci",
|
|
14
|
+
"claude",
|
|
15
|
+
"codex",
|
|
16
|
+
"stub-detection",
|
|
17
|
+
"s2s",
|
|
18
|
+
"spec-to-ship"
|
|
19
|
+
],
|
|
20
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
21
|
+
"author": "Gus Chiriboga",
|
|
22
|
+
"homepage": "https://github.com/KiniunCorp/s2s-verify#readme",
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "git+https://github.com/KiniunCorp/s2s-verify.git"
|
|
26
|
+
},
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/KiniunCorp/s2s-verify/issues"
|
|
29
|
+
},
|
|
30
|
+
"type": "module",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20"
|
|
33
|
+
},
|
|
34
|
+
"bin": {
|
|
35
|
+
"s2s-verify": "dist/cli.js",
|
|
36
|
+
"bramo-verify": "bin/bramo-verify.js"
|
|
37
|
+
},
|
|
38
|
+
"files": [
|
|
39
|
+
"dist",
|
|
40
|
+
"bin",
|
|
41
|
+
"README.md",
|
|
42
|
+
"LICENSE.md"
|
|
43
|
+
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "esbuild src/cli.ts --bundle --platform=node --format=esm --outfile=dist/cli.js --minify && chmod +x dist/cli.js",
|
|
46
|
+
"dev": "tsx src/cli.ts",
|
|
47
|
+
"typecheck": "tsc --noEmit",
|
|
48
|
+
"test": "tsx --test test/*.test.ts"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^22.0.0",
|
|
52
|
+
"esbuild": "^0.24.0",
|
|
53
|
+
"tsx": "^4.19.0",
|
|
54
|
+
"typescript": "^5.6.0",
|
|
55
|
+
"@babel/parser": "^8.0.4"
|
|
56
|
+
}
|
|
57
|
+
}
|