gennady 0.7.0 → 0.7.1

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.
Files changed (23) hide show
  1. package/dist/chunks/_commonjsHelpers-DaMA6jEr.js +8 -0
  2. package/dist/chunks/{devtools-B-7ugZhF.js → devtools-CPZ0IUNM.js} +1 -1
  3. package/dist/chunks/{index-CaahtXiM.js → index-BCqnKvNZ.js} +2 -2
  4. package/dist/chunks/{index-BeL1Zcbg.js → index-BLsDffzZ.js} +1 -1
  5. package/dist/chunks/{index-CVR66voe.js → index-Bq4d25CK.js} +17 -16
  6. package/dist/chunks/{index-D1qsi0Uc.js → index-BrSutH7l.js} +3 -3
  7. package/dist/chunks/{index-UbHoePfr.js → index-BsD-J44e.js} +1 -1
  8. package/dist/chunks/{index-g1LXlp77.js → index-BzBhCTHq.js} +2 -2
  9. package/dist/chunks/{index-DU6jD7SS.js → index-CAWs-GED.js} +1 -1
  10. package/dist/chunks/{index-CXuhZzS3.js → index-CFd_iufb.js} +1 -1
  11. package/dist/chunks/{services-CaLOhuLV.js → index-DAU6h0aT.js} +132 -2843
  12. package/dist/chunks/{index-DJpVmyp2.js → index-Db09OODV.js} +2 -2
  13. package/dist/chunks/{index-CiEM-8nJ.js → index-Dc44ukmL.js} +2 -2
  14. package/dist/chunks/{index-zBnnuvLA.js → index-DeYzAoxF.js} +7 -6
  15. package/dist/chunks/{index-D9ceRUyB.js → index-O5kqC9i_.js} +2 -2
  16. package/dist/chunks/{index-KxSZKmZn.js → index-TX0TmKeu.js} +2 -2
  17. package/dist/chunks/{run-review-command.logic-DpkRoEi8.js → run-review-command.logic-CwxYeLby.js} +2 -2
  18. package/dist/chunks/services-Dnk3nB2x.js +2732 -0
  19. package/dist/chunks/{shared-Bjy30TeM.js → shared-COpFaV-w.js} +1 -1
  20. package/dist/gennady.js +14 -14
  21. package/dist/index.js +5 -5
  22. package/dist/services/dbc/linter/implementations/ts/dbc-ts-ast-adapter.d.ts +3 -2
  23. package/package.json +1 -1
@@ -1,2889 +1,178 @@
1
- import Me from "os";
2
- import _e from "path";
3
- import Le from "fs";
4
- import { createServer as Pe } from "node:http";
5
- import { readFileSync as L, writeFileSync as De, existsSync as he, readdirSync as ge, statSync as Oe } from "node:fs";
6
- import Fe from "tree-sitter";
7
- import * as O from "node:path";
8
- import { join as M } from "node:path";
9
- import * as Be from "node:os";
10
- import { homedir as J } from "node:os";
11
- import { execSync as Ue } from "node:child_process";
12
- import { DatabaseSync as We } from "node:sqlite";
13
- var sr = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
14
- function ze(s) {
15
- return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, "default") ? s.default : s;
16
- }
17
- const E = { debug: 0, info: 1, warn: 2, error: 3, silent: 4 };
18
- let j = "warn";
19
- const ir = (s) => {
20
- j = s;
21
- }, _ = {
22
- debug: (s, e) => {
23
- E[j] <= E.debug && console.debug(s, ...e !== void 0 ? [e] : []);
24
- },
25
- info: (s, e) => {
26
- E[j] <= E.info && console.info(s, ...e !== void 0 ? [e] : []);
27
- },
28
- warn: (s, e) => {
29
- E[j] <= E.warn && console.warn(s, ...e !== void 0 ? [e] : []);
30
- },
31
- error: (s, e) => {
32
- E[j] <= E.error && console.error(s, ...e !== void 0 ? [e] : []);
33
- }
34
- }, pr = (s) => {
35
- if (!s || typeof s != "string" || s.trim().length === 0)
36
- return null;
37
- const e = s.trim();
38
- let t;
39
- try {
40
- t = new URL(e);
41
- } catch {
42
- return null;
43
- }
44
- const n = t.host, r = t.pathname.replace(/\/$/, ""), a = r.match(/^\/(.+?)\/-\/merge_requests\/(\d+)$/);
45
- if (a) {
46
- const p = parseInt(a[2], 10);
47
- return isNaN(p) ? null : {
48
- provider: "gitlab",
49
- host: n,
50
- repository: a[1],
51
- iid: p
52
- };
53
- }
54
- const i = r.match(/^\/(.+?)\/pull\/(\d+)$/);
55
- if (i) {
56
- const p = parseInt(i[2], 10);
57
- return isNaN(p) ? null : {
58
- provider: "github",
59
- host: n,
60
- repository: i[1],
61
- iid: p
62
- };
63
- }
64
- return null;
65
- };
66
- class qe {
67
- }
68
- class Ge extends qe {
69
- /** @purpose Bound HTTP request function injected for GitLab API calls */
70
- _request;
71
- /**
72
- * @purpose Wire the HTTP request adapter for GitLab merge request endpoints.
73
- * @param request Authenticated HTTP request function targeting GitLab API.
74
- */
75
- constructor(e) {
76
- super(), this._request = e;
77
- }
78
- /**
79
- * @param query Target project and optional filters.
80
- * @returns List of merge requests matching the filters.
81
- * @sideEffect Network: GET /projects/:project/merge_requests
82
- * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
83
- */
84
- async getList(e) {
85
- const t = new URLSearchParams(), n = e?.state ?? "opened";
86
- e?.sourceBranch && t.set("source_branch", e.sourceBranch), n && t.set("state", n), e?.perPage && t.set("per_page", String(e.perPage)), e?.page && t.set("page", String(e.page));
87
- const r = encodeURIComponent(e.project), a = await this._request(
88
- `/projects/${r}/merge_requests?${t.toString()}`
89
- );
90
- return Array.isArray(a) ? a : [];
91
- }
92
- /**
93
- * @param query Target project and optional filters.
94
- * @returns First matching merge request or null.
95
- * @sideEffect Network: Delegates to getList() with per_page=1 limit.
96
- * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
97
- */
98
- async getOne(e) {
99
- const t = await this.getList({ ...e, perPage: 1 });
100
- return t.length > 0 ? t[0] : null;
101
- }
102
- /**
103
- * @param query Target project and MR IID.
104
- * @returns Merge request object or null on 404.
105
- * @sideEffect Network: GET /projects/:project/merge_requests/:iid
106
- * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
107
- */
108
- async getByIid(e) {
109
- const t = encodeURIComponent(e.project), n = encodeURIComponent(String(e.iid));
110
- try {
111
- return await this._request(`/projects/${t}/merge_requests/${n}`);
112
- } catch (r) {
113
- if ((r.message ?? "").includes("404"))
114
- return null;
115
- throw r;
116
- }
117
- }
118
- /**
119
- * @param query Target repository and MR IID, optional pagination.
120
- * @returns List of changed files with metadata.
121
- * @sideEffect Network: GET /projects/:project/merge_requests/:iid/changes
122
- * @see {VcsClientMergeRequests#getChanges} in services/vcs-client/abstract/vcs-client-merge-requests.ts
123
- */
124
- async getChanges(e) {
125
- const t = new URLSearchParams();
126
- e?.perPage && t.set("per_page", String(e.perPage)), e?.page && t.set("page", String(e.page));
127
- const n = encodeURIComponent(e.repository), r = encodeURIComponent(String(e.iid)), a = await this._request(
128
- `/projects/${n}/merge_requests/${r}/changes?${t.toString()}`
129
- ), i = a?.changes ?? [], p = a.sha ?? a.source_branch ?? "main";
130
- return i.map((u) => {
131
- const l = u.new_path ?? u.old_path ?? "", d = u.new_file, y = u.deleted_file, f = u.renamed_file;
132
- let m = "modified";
133
- y ? m = "deleted" : d ? m = "added" : f && (m = "renamed");
134
- const o = {
135
- path: l,
136
- status: m,
137
- ref: p
138
- };
139
- return f && u.old_path && (o.previousPath = u.old_path), typeof u.additions == "number" && (o.additions = u.additions), typeof u.deletions == "number" && (o.deletions = u.deletions), o;
140
- });
141
- }
142
- }
143
- class Je {
144
- }
145
- class He extends Je {
146
- /** @purpose Bound HTTP request function injected for GitLab API calls */
147
- _request;
148
- /**
149
- * @purpose Wire the HTTP request adapter for GitLab merge discussion endpoints.
150
- * @param request Authenticated HTTP request function targeting GitLab API.
151
- */
152
- constructor(e) {
153
- super(), this._request = e;
154
- }
155
- /**
156
- * @param query Target project, MR, discussion, and note body.
157
- * @returns Created note object from GitLab API.
158
- * @sideEffect Network: POST /projects/:project/merge_requests/:iid/discussions/:discussion_id/notes
159
- * @see {VcsClientMergeDiscussions#addNote} in services/vcs-client/abstract/vcs-merge-discussions.ts
160
- */
161
- async addNote(e) {
162
- const t = encodeURIComponent(e.project), n = encodeURIComponent(String(e.iid)), r = encodeURIComponent(e.discussionId);
163
- return this._request(
164
- `/projects/${t}/merge_requests/${n}/discussions/${r}/notes`,
165
- {
166
- method: "POST",
167
- headers: { "Content-Type": "application/json" },
168
- body: JSON.stringify({ body: e.body })
169
- }
170
- );
171
- }
172
- /**
173
- * @param query Target project, MR, and optional pagination.
174
- * @returns List of discussions for the requested page.
175
- * @sideEffect Network: GET /projects/:project/merge_requests/:iid/discussions
176
- * @see {VcsClientMergeDiscussions#getList} in services/vcs-client/abstract/vcs-merge-discussions.ts
177
- */
178
- async getList(e) {
179
- const t = new URLSearchParams();
180
- e?.perPage && t.set("per_page", String(e.perPage)), e?.page && t.set("page", String(e.page));
181
- const n = encodeURIComponent(e.project), r = await this._request(
182
- `/projects/${n}/merge_requests/${encodeURIComponent(String(e.iid))}/discussions?${t.toString()}`
183
- );
184
- return Array.isArray(r) ? r : [];
185
- }
186
- /**
187
- * @param query Target project and MR.
188
- * @returns Complete list of all discussions across all pages.
189
- * @sideEffect Network: Multiple GET requests for paginated loading.
190
- * @see {VcsClientMergeDiscussions#getAll} in services/vcs-client/abstract/vcs-merge-discussions.ts
191
- */
192
- async getAll(e) {
193
- let n = 1;
194
- const r = [];
195
- for (; ; ) {
196
- const a = await this.getList({ ...e, perPage: 100, page: n });
197
- if (!Array.isArray(a) || a.length === 0 || (r.push(...a), a.length < 100)) break;
198
- n += 1;
199
- }
200
- return r;
201
- }
202
- }
203
- class be {
204
- }
205
- class Ve extends be {
206
- /** @purpose GitLab instance base URL */
207
- _baseUrl;
208
- /** @purpose GitLab access token */
209
- _token;
210
- /**
211
- * @purpose Wire the adapter with GitLab connection params for raw file fetches.
212
- * @param baseUrl GitLab instance base URL (e.g. https://gitlab.com/api/v4).
213
- * @param token GitLab personal access token.
214
- */
215
- constructor(e, t) {
216
- super(), this._baseUrl = e, this._token = t;
217
- }
218
- /**
219
- * @param query Target repository, file path, and ref.
220
- * @returns File content or null if file not found.
221
- * @sideEffect Network: GET /projects/:id/repository/files/:path/raw?ref=
222
- * @see {VcsClientRepositoryFiles#getFileContent} in services/vcs-client/abstract/vcs-client-repository-files.ts
223
- */
224
- async getFileContent(e) {
225
- const t = encodeURIComponent(e.repository), n = encodeURIComponent(e.path), r = encodeURIComponent(e.ref);
226
- let a;
227
- try {
228
- a = await fetch(
229
- `${this._baseUrl}/projects/${t}/repository/files/${n}/raw?ref=${r}`,
230
- { headers: { "PRIVATE-TOKEN": this._token } }
231
- );
232
- } catch (l) {
233
- throw new Error(`GitLab request failed: network error for file ${e.path}`, { cause: l });
234
- }
235
- if (a.status === 404)
236
- return null;
237
- if (!a.ok) {
238
- const l = await a.text().catch(() => "");
239
- throw new Error(`GitLab request failed: ${a.status} ${a.statusText} ${l}`);
240
- }
241
- const i = a.headers.get("content-type") ?? "", p = await a.text(), u = i.startsWith("text/") || i.includes("json") || i.includes("xml") || i.includes("javascript") || !i;
242
- return {
243
- path: e.path,
244
- content: p,
245
- encoding: u ? "utf-8" : "base64"
246
- };
247
- }
248
- }
249
- class xe {
250
- }
251
- class ur extends xe {
252
- /** @see {VcsClient#MergeRequests} in services/vcs-client/abstract/vcs-client.ts */
253
- MergeRequests;
254
- /** @see {VcsClient#MergeDiscussions} in services/vcs-client/abstract/vcs-client.ts */
255
- MergeDiscussions;
256
- /** @see {VcsClient#RepositoryFiles} in services/vcs-client/abstract/vcs-client.ts */
257
- RepositoryFiles;
258
- /**
259
- * @purpose Create a GitLab API client bound to a base URL with access token.
260
- * @param options Connection parameters: base URL and access token.
261
- */
262
- constructor(e) {
263
- super();
264
- const t = async (n, r = {}) => {
265
- const a = await fetch(`${e.baseUrl}${n}`, {
266
- ...r,
267
- headers: {
268
- "PRIVATE-TOKEN": e.token,
269
- ...r.headers ?? {}
270
- }
271
- });
272
- if (!a.ok) {
273
- const i = await a.text().catch(() => "");
274
- throw new Error(`GitLab request failed: ${a.status} ${a.statusText} ${i}`);
275
- }
276
- return a.json();
277
- };
278
- this.MergeRequests = new Ge(t), this.MergeDiscussions = new He(t), this.RepositoryFiles = new Ve(e.baseUrl, e.token);
279
- }
280
- }
281
- class Ke extends qe {
282
- /** @purpose Bound HTTP request function for GitHub API calls */
283
- _request;
284
- /**
285
- * @purpose Wire the HTTP request adapter for GitHub PR endpoints.
286
- * @param request Authenticated HTTP request function targeting GitHub API.
287
- */
288
- constructor(e) {
289
- super(), this._request = e;
290
- }
291
- /**
292
- * @purpose GitHub getList not implemented — use getChanges for PR files.
293
- * @returns Empty array — not implemented.
294
- */
295
- async getList() {
296
- throw new Error("GitHub getList not implemented — use getChanges for PR files");
297
- }
298
- /**
299
- * @purpose GitHub getOne not implemented.
300
- * @returns Null — not implemented.
301
- */
302
- async getOne() {
303
- throw new Error("GitHub getOne not implemented");
304
- }
305
- /**
306
- * @purpose GitHub getByIid not implemented.
307
- * @returns Null — not implemented.
308
- */
309
- async getByIid() {
310
- throw new Error("GitHub getByIid not implemented");
311
- }
312
- /**
313
- * @param query Target repository and PR number, optional pagination.
314
- * @returns List of changed files with metadata.
315
- * @sideEffect Network: GET /repos/:owner/:repo/pulls/:number/files
316
- * @see {VcsClientMergeRequests#getChanges} in services/vcs-client/abstract/vcs-client-merge-requests.ts
317
- */
318
- async getChanges(e) {
319
- const t = new URLSearchParams();
320
- e?.perPage && t.set("per_page", String(e.perPage)), e?.page && t.set("page", String(e.page));
321
- const n = encodeURIComponent(e.repository), r = encodeURIComponent(String(e.iid)), [a, i] = await Promise.all([
322
- this._request(`/repos/${n}/pulls/${r}`),
323
- this._request(`/repos/${n}/pulls/${r}/files?${t.toString()}`)
324
- ]), p = a?.head?.ref ?? "main";
325
- return (Array.isArray(i) ? i : []).map((l) => {
326
- const d = l.filename ?? "", y = l.status ?? "modified", f = l.additions, m = l.deletions;
327
- let o = "modified";
328
- y === "added" ? o = "added" : y === "removed" ? o = "deleted" : y === "renamed" && (o = "renamed");
329
- const c = {
330
- path: d,
331
- status: o,
332
- ref: p
333
- };
334
- return o === "renamed" && l.previous_filename && (c.previousPath = l.previous_filename), typeof f == "number" && (c.additions = f), typeof m == "number" && (c.deletions = m), c;
335
- });
336
- }
337
- }
338
- class Xe extends be {
339
- /** @purpose GitHub API base URL */
340
- _baseUrl;
341
- /** @purpose GitHub access token */
342
- _token;
343
- /**
344
- * @purpose Wire the adapter with GitHub connection params for raw content fetches.
345
- * @param baseUrl GitHub API base URL (e.g. https://api.github.com).
346
- * @param token GitHub personal access token.
347
- */
348
- constructor(e, t) {
349
- super(), this._baseUrl = e, this._token = t;
350
- }
351
- /**
352
- * @param query Target repository, file path, and ref.
353
- * @returns File content or null if file not found.
354
- * @sideEffect Network: GET /repos/:owner/:repo/contents/:path?ref=
355
- * @see {VcsClientRepositoryFiles#getFileContent} in services/vcs-client/abstract/vcs-client-repository-files.ts
356
- */
357
- async getFileContent(e) {
358
- const t = encodeURIComponent(e.repository), n = encodeURIComponent(e.path), r = encodeURIComponent(e.ref);
359
- let a;
360
- try {
361
- a = await fetch(`${this._baseUrl}/repos/${t}/contents/${n}?ref=${r}`, {
362
- headers: {
363
- Authorization: "Bearer " + this._token,
364
- Accept: "application/vnd.github+json",
365
- "X-GitHub-Api-Version": "2022-11-28"
366
- }
367
- });
368
- } catch (d) {
369
- throw new Error(`GitHub request failed: network error for file ${e.path}`, { cause: d });
370
- }
371
- if (a.status === 404)
372
- return null;
373
- if (!a.ok) {
374
- const d = await a.text().catch(() => "");
375
- throw new Error(`GitHub request failed: ${a.status} ${a.statusText} ${d}`);
376
- }
377
- const i = await a.json(), p = i.encoding ?? "none", u = i.content ?? "";
378
- if (p === "base64") {
379
- const d = Buffer.from(u, "base64").toString("utf-8"), y = !d.includes("\0");
380
- return {
381
- path: e.path,
382
- content: y ? d : u,
383
- encoding: y ? "utf-8" : "base64"
384
- };
385
- }
386
- const l = i.type;
387
- return l === "submodule" || l === "symlink" ? {
388
- path: e.path,
389
- content: i.submodule_git_url ?? i.target ?? "",
390
- encoding: "utf-8"
391
- } : {
392
- path: e.path,
393
- content: u,
394
- encoding: "utf-8"
395
- };
396
- }
397
- }
398
- class dr extends xe {
399
- /** @see {VcsClient#MergeRequests} in services/vcs-client/abstract/vcs-client.ts */
400
- MergeRequests;
401
- /** @see {VcsClient#MergeDiscussions} in services/vcs-client/abstract/vcs-client.ts */
402
- MergeDiscussions = void 0;
403
- /** @see {VcsClient#RepositoryFiles} in services/vcs-client/abstract/vcs-client.ts */
404
- RepositoryFiles;
405
- /**
406
- * @purpose Create a GitHub API client bound to a base URL with access token.
407
- * @param options Connection parameters: base URL and access token.
408
- */
409
- constructor(e) {
410
- super();
411
- const t = async (n, r = {}) => {
412
- const a = await fetch(`${e.baseUrl}${n}`, {
413
- ...r,
414
- headers: {
415
- Authorization: "Bearer " + e.token,
416
- Accept: "application/vnd.github+json",
417
- "X-GitHub-Api-Version": "2022-11-28",
418
- ...r.headers ?? {}
419
- }
420
- });
421
- if (!a.ok) {
422
- const i = await a.text().catch(() => "");
423
- throw new Error(`GitHub request failed: ${a.status} ${a.statusText} ${i}`);
424
- }
425
- return a.json();
426
- };
427
- this.MergeRequests = new Ke(t), this.RepositoryFiles = new Xe(e.baseUrl, e.token);
428
- }
429
- }
430
- function F(s) {
431
- try {
432
- if (s === null)
433
- return { kind: "primitive", text: "null" };
434
- if (s === void 0)
435
- return { kind: "primitive", text: "undefined" };
436
- const e = typeof s;
437
- if (e === "string" || e === "number" || e === "boolean" || e === "bigint" || e === "symbol")
438
- return { kind: "primitive", text: String(s) };
439
- if (e === "function")
440
- return {
441
- kind: "tagged",
442
- tag: "[object Function]",
443
- text: `[function ${s.name || "anonymous"}]`
444
- };
445
- const t = Object.prototype.toString.call(s);
446
- if (s instanceof Error) {
447
- const r = s.message ? `${s.name}: ${s.message}` : s.name;
448
- return { kind: "tagged", tag: t, text: r };
449
- }
450
- const n = Ye(s);
451
- return n ? { kind: "tagged", tag: t, text: `${t} ${n}` } : { kind: "tagged", tag: t, text: t };
452
- } catch (e) {
453
- return {
454
- kind: "tagged",
455
- tag: "[object Unserializable]",
456
- text: `[unserializable: ${String(e)}]`
457
- };
458
- }
459
- }
460
- function Ye(s) {
461
- const e = /* @__PURE__ */ new WeakSet();
462
- try {
463
- return JSON.stringify(s, (n, r) => {
464
- if (typeof r == "bigint")
465
- return `${r.toString()}n`;
466
- if (typeof r == "symbol")
467
- return r.toString();
468
- if (typeof r == "function")
469
- return `[function ${r.name || "anonymous"}]`;
470
- if (r && typeof r == "object") {
471
- if (e.has(r))
472
- return "[circular]";
473
- e.add(r);
474
- }
475
- return r;
476
- }) ?? null;
477
- } catch {
478
- return null;
479
- }
480
- }
481
- const H = ["log", "info", "warn", "error", "debug"], Qe = 5e3, B = /* @__PURE__ */ new WeakMap(), $ = globalThis;
482
- function Ze(s, e) {
483
- et(s, e);
484
- const t = B.get(s);
485
- if (t)
486
- return t.duplicateConnectWarned || (t.duplicateConnectWarned = !0, t.originals.warn(
487
- "[remoteConsoleClient.connect] [connected → connected] Duplicate connect ignored for existing target"
488
- )), t.runtime;
489
- const n = tt(s), a = {
490
- disconnect: async () => {
491
- const p = B.get(s);
492
- p && await W(p, !1);
493
- }
494
- }, i = {
495
- url: e.url,
496
- tabId: e.tabId,
497
- branch: e.branch,
498
- consoleTarget: s,
499
- originals: n,
500
- queue: [],
501
- flushInFlight: !1,
502
- transportFailureNotified: !1,
503
- duplicateConnectWarned: !1,
504
- shutdownStarted: !1,
505
- intervalId: null,
506
- pagehideListener: () => {
507
- W(i, !0);
508
- },
509
- beforeunloadListener: () => {
510
- W(i, !0);
511
- },
512
- runtime: a
513
- };
514
- return rt(i), nt(i), st(i), i.intervalId = setInterval(() => {
515
- ve(i, !1);
516
- }, Qe), s.__remote__ = a, B.set(s, i), a;
517
- }
518
- const lr = {
519
- connect: Ze
520
- };
521
- function et(s, e) {
522
- try {
523
- new URL(e.url);
524
- } catch (t) {
525
- throw new Error("[remoteConsoleClient.connect] Invalid config.url: expected absolute URL", {
526
- cause: t
527
- });
528
- }
529
- for (const t of H)
530
- if (typeof s[t] != "function")
531
- throw new Error(`[remoteConsoleClient.connect] Missing console method: ${t}`);
532
- }
533
- function tt(s) {
534
- return {
535
- log: s.log.bind(s),
536
- info: s.info.bind(s),
537
- warn: s.warn.bind(s),
538
- error: s.error.bind(s),
539
- debug: s.debug.bind(s)
540
- };
541
- }
542
- function rt(s) {
543
- for (const e of H) {
544
- const t = s.originals[e];
545
- s.consoleTarget[e] = (...n) => {
546
- t(...n), !s.shutdownStarted && s.queue.push({
547
- level: e,
548
- timestamp: Date.now(),
549
- args: n.map((r) => F(r)),
550
- tabId: s.tabId,
551
- branch: s.branch
552
- });
553
- };
554
- }
555
- }
556
- function nt(s) {
557
- s.queue.push({
558
- level: "info",
559
- timestamp: Date.now(),
560
- args: [
561
- F("[remote-console] connected"),
562
- F(`tabId=${s.tabId ?? "unknown"}`),
563
- F(`branch=${s.branch ?? "unknown"}`)
564
- ],
565
- tabId: s.tabId,
566
- branch: s.branch
567
- });
568
- }
569
- function at(s) {
570
- for (const e of H)
571
- s.consoleTarget[e] = s.originals[e];
572
- delete s.consoleTarget.__remote__;
573
- }
574
- function st(s) {
575
- typeof $.addEventListener == "function" && ($.addEventListener("pagehide", s.pagehideListener), $.addEventListener("beforeunload", s.beforeunloadListener));
576
- }
577
- function it(s) {
578
- typeof $.removeEventListener == "function" && ($.removeEventListener("pagehide", s.pagehideListener), $.removeEventListener("beforeunload", s.beforeunloadListener));
579
- }
580
- async function W(s, e) {
581
- if (!s.shutdownStarted) {
582
- s.shutdownStarted = !0, s.intervalId && (clearInterval(s.intervalId), s.intervalId = null), it(s);
583
- try {
584
- await ve(s, e);
585
- try {
586
- await we(s, { type: "disconnect", tabId: s.tabId }, e);
587
- } catch {
588
- }
589
- } finally {
590
- at(s), B.delete(s.consoleTarget);
591
- }
592
- }
593
- }
594
- async function ve(s, e) {
595
- if (s.flushInFlight || s.queue.length === 0)
596
- return;
597
- s.flushInFlight = !0;
598
- const t = s.queue.splice(0, s.queue.length);
599
- try {
600
- await we(s, { type: "logs", tabId: s.tabId, items: t }, e);
601
- } catch (n) {
602
- s.transportFailureNotified || (s.transportFailureNotified = !0, s.originals.error(
603
- "[remoteConsoleClient.connect] [streaming → degraded] Remote sink became unavailable; local console remains active",
604
- { cause: n }
605
- ));
606
- } finally {
607
- s.flushInFlight = !1;
608
- }
609
- }
610
- async function we(s, e, t) {
611
- if (t) {
612
- await pt(s.url, e);
613
- return;
614
- }
615
- const n = await fetch(s.url, {
616
- method: "POST",
617
- headers: {
618
- "content-type": "application/json"
619
- },
620
- body: JSON.stringify(e)
621
- });
622
- if (!n.ok)
623
- throw new Error(`[remoteConsoleClient.connect] Unexpected response status: ${n.status}`);
624
- }
625
- async function pt(s, e) {
626
- const t = JSON.stringify(e), n = new Blob([t], { type: "application/json" }), r = $.navigator?.sendBeacon;
627
- if (!(typeof r == "function" && r.call($.navigator, s, n)))
628
- try {
629
- await fetch(s, {
630
- method: "POST",
631
- headers: {
632
- "content-type": "application/json"
633
- },
634
- body: t,
635
- keepalive: !0
636
- });
637
- } catch {
638
- }
639
- }
640
- class ut {
641
- /** @purpose Stores low-level line sink used to emit already-rendered stdout entries. */
642
- _writeLine;
643
- /**
644
- * @purpose Configures writer with injected sink or defaults to process.stdout line output.
645
- * @param [writeLine] Optional custom line writer function.
646
- */
647
- constructor(e) {
648
- this._writeLine = e ?? ((t) => process.stdout.write(`${t}
649
- `));
650
- }
651
- /**
652
- * @purpose Prints ordered log entries as one normalized line per entry.
653
- * @param items Parsed log entry list from command envelope payload.
654
- * @sideEffect IO: writes rendered lines into stdout stream (or injected writer).
655
- */
656
- write(e) {
657
- for (const t of e) {
658
- const n = this.render(t);
659
- this._writeLine(n);
660
- }
661
- }
662
- /**
663
- * @purpose Creates stable text format independent from platform util.inspect behavior.
664
- * @param item Single remote log entry with serialized args.
665
- * @returns Flat line in format `[console.<level>] <arg1> <arg2> ...`.
666
- */
667
- render(e) {
668
- const t = e.args.map((n) => n.text).join(" ").trim();
669
- return t ? `[console.${e.level}] ${t}` : `[console.${e.level}]`;
670
- }
671
- }
672
- const Ie = "/";
673
- async function mr(s) {
674
- dt(s);
675
- const e = s.host ?? "127.0.0.1", t = new ut(s.stdoutWrite), n = new ot(
676
- s.exitCode ?? 0,
677
- s.exit
678
- ), r = Pe((i, p) => {
679
- lt(i, p, t, n, r).catch(
680
- () => {
681
- p.writableEnded || C(p, 500, { ok: !1, error: "runtime_failure" });
682
- }
683
- );
684
- });
685
- await new Promise((i, p) => {
686
- r.once("error", p), r.listen(s.port, e, () => {
687
- r.off("error", p), i();
688
- });
689
- });
690
- const a = r.address();
691
- if (!a || typeof a == "string")
692
- throw new Error("[startRemoteConsoleServer] Failed to resolve runtime endpoint address");
693
- return {
694
- url: `http://${e}:${a.port}${Ie}`,
695
- close: async () => {
696
- await Se(r);
697
- }
698
- };
699
- }
700
- function dt(s) {
701
- if (!Number.isInteger(s.port) || s.port < 0 || s.port > 65535)
702
- throw new Error("[startRemoteConsoleServer] Invalid port: expected integer in range 0..65535");
703
- }
704
- async function lt(s, e, t, n, r) {
705
- try {
706
- if (s.url !== Ie) {
707
- C(e, 404, { ok: !1, error: "not_found" });
708
- return;
709
- }
710
- if (s.method !== "POST") {
711
- C(e, 405, { ok: !1, error: "method_not_allowed" });
712
- return;
713
- }
714
- const a = await yt(s);
715
- let i;
716
- try {
717
- i = JSON.parse(a);
718
- } catch {
719
- C(e, 400, { ok: !1, error: "invalid_json" });
720
- return;
721
- }
722
- if (!mt(i)) {
723
- C(e, 400, { ok: !1, error: "invalid_envelope" });
724
- return;
725
- }
726
- if (i.type === "logs") {
727
- if (!Array.isArray(i.items) || i.items.length === 0) {
728
- C(e, 400, { ok: !1, error: "invalid_logs_payload" });
729
- return;
730
- }
731
- t.write(i.items), C(e, 202, { ok: !0 });
732
- return;
733
- }
734
- if (i.type === "disconnect") {
735
- C(e, 202, { ok: !0 }), await n.begin(r);
736
- return;
737
- }
738
- C(e, 400, { ok: !1, error: "unsupported_command" });
739
- } catch {
740
- e.writableEnded || C(e, 500, { ok: !1, error: "runtime_failure" });
741
- }
742
- }
743
- function mt(s) {
744
- if (!s || typeof s != "object")
745
- return !1;
746
- const e = s.type;
747
- return e === "disconnect" ? !0 : e === "logs" ? Array.isArray(s.items) : !1;
748
- }
749
- async function yt(s) {
750
- let e = "";
751
- for await (const t of s)
752
- e += t.toString();
753
- return e;
754
- }
755
- function C(s, e, t) {
756
- s.statusCode = e, s.setHeader("content-type", "application/json"), s.end(JSON.stringify(t));
757
- }
758
- async function Se(s) {
759
- await new Promise((e, t) => {
760
- s.close((n) => {
761
- if (n) {
762
- t(n);
763
- return;
764
- }
765
- e();
766
- });
767
- });
768
- }
769
- class ot {
770
- /** @purpose Stores configured exit code used after controlled socket shutdown completes. */
771
- _exitCode;
772
- /** @purpose Stores process-exit strategy (real exit in prod, spy callback in tests). */
773
- _exit;
774
- /** @purpose Prevents duplicate shutdown orchestration across repeated disconnect signals. */
775
- _started = !1;
776
- /** @purpose Initializes controller with deterministic exit behavior for runtime or test harnesses. */
777
- constructor(e, t) {
778
- this._exitCode = e, this._exit = t ?? ((n) => process.exit(n));
779
- }
780
- /**
781
- * @purpose Starts shutdown exactly once: close server socket first, then trigger configured exit strategy.
782
- * @param server Active server runtime instance.
783
- * @sideEffect Network: stops accepting incoming HTTP connections.
784
- * @sideEffect Process: triggers exit callback with configured exit code.
785
- */
786
- async begin(e) {
787
- if (!this._started) {
788
- this._started = !0;
789
- try {
790
- await Se(e);
791
- } finally {
792
- this._exit(this._exitCode);
793
- }
794
- }
795
- }
796
- }
797
- const ae = "ERR_DBC_PURPOSE_CONFLICT", ft = "ERR_DBC_ORDER", ct = "ERR_DBC_PARAM_NAME_MISSING", _t = "ERR_DBC_SEE_FORMAT_INVALID", ht = [
798
- "implements",
799
- "invariant",
800
- "pre",
801
- "param",
802
- "throws",
803
- "returns",
804
- "post",
805
- "sideEffect"
806
- ], gt = new Map(
807
- ht.map((s, e) => [s, e])
808
- );
809
- class yr {
810
- /**
811
- * @param inputContract Raw contract text to parse.
812
- * @returns Parsed DBC schema with entries and format metadata.
813
- * @see {DbcParser#parse} in ../../dbc-parser.types.ts
814
- */
815
- parse(e) {
816
- const t = [];
817
- let r = e.trim();
818
- r.startsWith("/**") && (r = r.slice(3)), r.endsWith("*/") && (r = r.slice(0, -2)), r = r.trim();
819
- const a = r.includes(`
820
- `) ? "multi-line" : "single-line", i = e.split(/\r?\n/u);
821
- let p, u = !1;
822
- const l = [];
823
- for (let y = 0; y < i.length; y += 1) {
824
- const f = y + 1, m = this.normalizeLine(i[y] ?? "");
825
- if (m.length !== 0) {
826
- if (m.startsWith("@")) {
827
- !u && l.length > 0 && (t.push({
828
- type: "description",
829
- value: l.join(`
830
- `),
831
- issues: [],
832
- line: 1
833
- }), l.length = 0), u = !0;
834
- const o = this.parseTagLine(m, f);
835
- if (!o)
836
- continue;
837
- t.push(o), p = o;
838
- continue;
839
- }
840
- if (!u) {
841
- l.push(m);
842
- continue;
843
- }
844
- p && (p.value = p.value.length > 0 ? `${p.value}
845
- ${m}` : m);
846
- }
847
- }
848
- !u && l.length > 0 && t.push({
849
- type: "description",
850
- value: l.join(`
851
- `),
852
- issues: [],
853
- line: 1
854
- }), this.validatePurposeConflict(t), this.validateContractOrder(t), this.validateParamSpecifier(t), this.validateSeeSpecifier(t);
855
- let d;
856
- if (a === "single-line" && t.length > 0) {
857
- const y = t[0];
858
- if (y && y.value.includes(" | @")) {
859
- const f = y.value.split(" | @");
860
- y.value = (f[0] ?? "").trim();
861
- const m = [];
862
- for (let o = 1; o < f.length; o += 1) {
863
- const c = `@${f[o] ?? ""}`, b = this.parseTagLine(c, y.line);
864
- b && m.push(b);
865
- }
866
- m.length > 0 && (d = m);
867
- }
868
- }
869
- return {
870
- entries: t.map(({ line: y, ...f }, m) => m === 0 && d ? {
871
- ...f,
872
- inline: d.map(({ line: o, ...c }) => c)
873
- } : f),
874
- format: a
875
- };
876
- }
877
- /**
878
- * @purpose Normalizes a raw source line by stripping JSDoc framing tokens and edge whitespace.
879
- * @param sourceLine Raw line from the input contract.
880
- * @returns Line prepared for tag and multiline-value parsing.
881
- */
882
- normalizeLine(e) {
883
- let t = e.trimStart();
884
- return t.startsWith("*/") ? "" : (t.startsWith("/**") && (t = t.slice(3)), t = t.trimStart(), t.startsWith("*") && (t = t.slice(1).trimStart()), t.endsWith("*/") && (t = t.slice(0, -2).trimEnd()), t.trim());
885
- }
886
- /**
887
- * @purpose Parses a normalized tag line into an entry object with a source line reference.
888
- * @param tagLine Normalized line starting with `@`.
889
- * @param line One-based source line number.
890
- * @returns Parsed entry or undefined when the tag name is missing.
891
- */
892
- parseTagLine(e, t) {
893
- const n = /^@(\S+)(?:\s+([\s\S]*))?$/u.exec(e);
894
- if (!n)
895
- return;
896
- const r = n[1]?.trim();
897
- if (!r)
898
- return;
899
- const a = (n[2] ?? "").trim();
900
- return r === "param" ? this.parseParamTag(r, a, t) : r === "see" ? this.parseSeeTag(r, a, t) : r === "implements" ? this.parseImplementsTag(r, a, t) : r === "returns" || r === "throws" ? this.parseTagWithOptionalDataType(r, a, t) : r === "description" ? {
901
- type: "description",
902
- value: a,
903
- issues: [],
904
- line: t
905
- } : {
906
- type: r,
907
- value: a,
908
- issues: [],
909
- line: t
910
- };
911
- }
912
- /**
913
- * @purpose Parses tags where `{dataType}` is optional and the remainder is a plain value.
914
- * @param type Tag type.
915
- * @param tail Content after the tag name.
916
- * @param line One-based source line number.
917
- * @returns Parsed entry.
918
- */
919
- parseTagWithOptionalDataType(e, t, n) {
920
- const r = /^\{([^}]+)\}\s*(.*)$/u.exec(t);
921
- return r ? {
922
- type: e,
923
- dataType: r[1]?.trim(),
924
- value: (r[2] ?? "").trim(),
925
- issues: [],
926
- line: n
927
- } : {
928
- type: e,
929
- value: t,
930
- issues: [],
931
- line: n
932
- };
933
- }
934
- /**
935
- * @purpose Parses `@param` into `dataType`, optional `specifier`, `optional`, and value fields.
936
- * @param type Tag type.
937
- * @param tail Content after `@param`.
938
- * @param line One-based source line number.
939
- * @returns Parsed entry.
940
- */
941
- parseParamTag(e, t, n) {
942
- const r = {
943
- type: e,
944
- value: "",
945
- issues: [],
946
- line: n
947
- };
948
- let a = t;
949
- const i = /^\{([^}]+)\}\s*(.*)$/u.exec(a);
950
- if (i && (r.dataType = i[1]?.trim(), a = (i[2] ?? "").trim()), a.length === 0)
951
- return r;
952
- const p = /^(\[[^\]]+\]|\S+)(?:\s+([\s\S]*))?$/u.exec(a);
953
- if (!p)
954
- return r.value = a, r;
955
- const u = p[1] ?? "";
956
- return u.startsWith("[") && u.endsWith("]") ? (r.optional = !0, r.specifier = u.slice(1, -1).trim()) : r.specifier = u.trim(), r.value = (p[2] ?? "").trim(), r;
957
- }
958
- /**
959
- * @purpose Parses `@see` into required `{specifier}` and optional trailing value.
960
- * @param type Tag type.
961
- * @param tail Content after `@see`.
962
- * @param line Source line number.
963
- * @returns Parsed entry.
964
- */
965
- parseSeeTag(e, t, n) {
966
- const r = {
967
- type: e,
968
- value: "",
969
- issues: [],
970
- line: n
971
- }, a = /^\{([^}]+)\}\s*(.*)$/u.exec(t);
972
- return a ? (r.specifier = a[1]?.trim(), r.value = (a[2] ?? "").trim(), r) : (r.value = t, r);
973
- }
974
- /**
975
- * @purpose Parses `@implements` into required `{ContractName}` and optional trailing value.
976
- * @param type Tag type.
977
- * @param tail Content after `@implements`.
978
- * @param line One-based source line number.
979
- * @returns Parsed entry.
980
- */
981
- parseImplementsTag(e, t, n) {
982
- const r = {
983
- type: e,
984
- value: "",
985
- issues: [],
986
- line: n
987
- }, a = /^\{([^}]+)\}\s*(.*)$/u.exec(t);
988
- return a ? (r.specifier = a[1]?.trim(), r.value = (a[2] ?? "").trim(), r) : (r.value = t, r);
989
- }
990
- /**
991
- * @purpose Emits a conflict issue when `purpose` and `see` are both present in the parsed entries.
992
- * @param entries Parsed entries with source lines.
993
- */
994
- validatePurposeConflict(e) {
995
- let t = !1, n = !1;
996
- for (const r of e) {
997
- if (r.type === "purpose") {
998
- n && this.attachIssue(r, ae), t = !0;
999
- continue;
1000
- }
1001
- r.type === "see" && (t && this.attachIssue(r, ae), n = !0);
1002
- }
1003
- }
1004
- /**
1005
- * @purpose Verifies that contract tags follow the strict sequence required by the DBC standard.
1006
- * @param entries Parsed entries with source lines.
1007
- */
1008
- validateContractOrder(e) {
1009
- let t = -1;
1010
- for (const n of e) {
1011
- const r = gt.get(n.type);
1012
- r !== void 0 && (r < t && this.attachIssue(n, ft), t = Math.max(t, r));
1013
- }
1014
- }
1015
- /**
1016
- * @purpose Emits missing-parameter-name issues for `@param` entries without a non-empty specifier.
1017
- * @param entries Parsed entries with source lines.
1018
- */
1019
- validateParamSpecifier(e) {
1020
- for (const t of e)
1021
- t.type === "param" && (!t.specifier || t.specifier.trim().length === 0) && this.attachIssue(t, ct);
1022
- }
1023
- /**
1024
- * @purpose Emits invalid-see-format issues for `@see` entries.
1025
- * @param entries Parsed entries to validate.
1026
- */
1027
- validateSeeSpecifier(e) {
1028
- for (const t of e)
1029
- t.type === "see" && (!t.specifier || t.specifier.trim().length === 0) && this.attachIssue(t, _t);
1030
- }
1031
- /**
1032
- * @purpose Adds an issue to a specific entry and preserves the entry start line in diagnostics.
1033
- * @param entry Parsed entry with source line.
1034
- * @param code Stable parser issue code.
1035
- */
1036
- attachIssue(e, t) {
1037
- e.issues.push({
1038
- code: t,
1039
- line: e.line
1040
- });
1041
- }
1042
- }
1043
- const se = "ERR_DBC_LINT_MISSING_CONTRACT", P = "ERR_DBC_LINT_PARSE_FAILED", qt = "ERR_DBC_LINT_PARAM_MISSING", ie = "ERR_DBC_LINT_PARAM_EXTRA", bt = "ERR_DBC_LINT_PARAM_ORDER", pe = "ERR_DBC_LINT_RETURNS_MISSING", ue = "ERR_DBC_LINT_RETURNS_UNEXPECTED", xt = "ERR_DBC_LINT_TYPE_REDUNDANT", de = "ERR_DBC_LINT_PARAM_OPTIONAL_MISMATCH", V = /* @__PURE__ */ new Set([
1044
- "function",
1045
- "method",
1046
- "interface-method",
1047
- "constructor",
1048
- "export-default"
1049
- ]), K = /* @__PURE__ */ new Set([
1050
- "function",
1051
- "method",
1052
- "interface-method",
1053
- "export-default"
1054
- ]), Re = /* @__PURE__ */ new Set(["getter"]), X = /* @__PURE__ */ new Set([
1055
- "constructor",
1056
- "setter",
1057
- "field",
1058
- "interface-property",
1059
- "const",
1060
- "type",
1061
- "enum",
1062
- "enum-member",
1063
- "class",
1064
- "interface"
1065
- ]), vt = /* @__PURE__ */ new Set([
1066
- ...V,
1067
- ...K,
1068
- ...Re,
1069
- ...X,
1070
- "export-default"
1071
- ]);
1072
- function A(s) {
1073
- let e = s;
1074
- return e.startsWith("...") && (e = e.slice(3)), e.startsWith("[") && e.endsWith("]") && (e = e.slice(1, -1)), e;
1075
- }
1076
- function S(s, e) {
1077
- return {
1078
- file: "",
1079
- line: 1,
1080
- col: 1,
1081
- severity: "error",
1082
- code: s,
1083
- message: e
1084
- };
1085
- }
1086
- function wt(s, e, t) {
1087
- if (!vt.has(t))
1088
- return [];
1089
- const n = [], r = s.filter((d) => d.type === "param"), a = s.find((d) => d.type === "returns"), i = V.has(t), p = K.has(t), u = Re.has(t), l = X.has(t);
1090
- if (i) {
1091
- const d = e.params.map((m) => m.name), y = r.map((m) => A(m.specifier ?? ""));
1092
- for (const m of d)
1093
- y.includes(m) || n.push(
1094
- S(qt, `Parameter '${m}' is missing from contract`)
1095
- );
1096
- for (let m = 0; m < r.length; m += 1) {
1097
- const o = y[m];
1098
- d.includes(o) || n.push(
1099
- S(
1100
- ie,
1101
- `Extra @param '${r[m].specifier ?? ""}' not in signature`
1102
- )
1103
- );
1104
- }
1105
- const f = new Map(e.params.map((m) => [m.name, m]));
1106
- for (const m of r) {
1107
- const o = A(m.specifier ?? ""), c = f.get(o);
1108
- c && !c.isRest && (c.optional && !m.optional ? n.push(
1109
- S(
1110
- de,
1111
- `Parameter '${o}' is optional in signature but missing brackets in contract`
1112
- )
1113
- ) : !c.optional && m.optional && n.push(
1114
- S(
1115
- de,
1116
- `Parameter '${o}' is not optional in signature but has brackets in contract`
1117
- )
1118
- ));
1119
- }
1120
- if (d.length === y.length && d.every((m) => y.includes(m))) {
1121
- let m = 0, o = !1;
1122
- for (const c of y) {
1123
- const b = d.indexOf(c);
1124
- if (b >= 0) {
1125
- if (b < m) {
1126
- o = !0;
1127
- break;
1128
- }
1129
- m = b;
1130
- }
1131
- }
1132
- o && n.push(S(bt, "@param order does not match signature"));
1133
- }
1134
- } else
1135
- for (let d = 0; d < r.length; d += 1)
1136
- n.push(S(ie, `@param not applicable for kind '${t}'`));
1137
- u ? a || n.push(S(pe, `Missing @returns for kind '${t}'`)) : p ? (e.returnType !== "void" && !a && n.push(
1138
- S(
1139
- pe,
1140
- `Missing @returns for non-void return type '${e.returnType}'`
1141
- )
1142
- ), e.returnType === "void" && a && n.push(
1143
- S(ue, "Unexpected @returns for void return type")
1144
- )) : l && a && n.push(
1145
- S(ue, `@returns not applicable for kind '${t}'`)
1146
- );
1147
- for (const d of s)
1148
- (d.type === "param" || d.type === "returns") && d.dataType && n.push(
1149
- S(xt, `Redundant {${d.dataType}} in @${d.type}`)
1150
- );
1151
- return n;
1152
- }
1153
- function N(s) {
1154
- return s.map((e) => `${e.file}:${e.line}:${e.col}: ${e.severity}: ${e.code}: ${e.message}`).join(`
1155
- `);
1156
- }
1157
- class or {
1158
- /** @purpose DBC parser for parsing contract text */
1159
- _parser;
1160
- /** @purpose AST adapter for parsing TypeScript source files */
1161
- _astAdapter;
1162
- /**
1163
- * @purpose Construct a linter with injected parser and AST adapter.
1164
- * @param parser DbcParser instance for contract parsing.
1165
- * @param astAdapter DbcAstAdapter instance for source file parsing.
1166
- */
1167
- constructor(e, t) {
1168
- this._parser = e, this._astAdapter = t;
1169
- }
1170
- /**
1171
- * @param filePath Path to the source file to check.
1172
- * @param [options] Optional lint configuration.
1173
- * @returns Full lint report with errors and a formatting function.
1174
- * @see {DbcLinter#lint} in ../../dbc-linter.types.ts
1175
- */
1176
- async lint(e, t) {
1177
- _.debug(`[DbcTsLinter#lint] [idle → parsing] ${e}`);
1178
- try {
1179
- const n = await this._astAdapter.parseFile(
1180
- e,
1181
- t?.content
1182
- );
1183
- if (!n.ok) {
1184
- const a = {
1185
- file: e,
1186
- line: 1,
1187
- col: 1,
1188
- severity: "error",
1189
- code: P,
1190
- message: n.error
1191
- };
1192
- return _.warn(`[DbcTsLinter#lint] [parsing → parse-failed] ${e}`), { errors: [a], format: () => N([a]) };
1193
- }
1194
- const r = this._lintEntities(n.exported, e);
1195
- return _.info(`[DbcTsLinter#lint] [parsing → linted] ${e} (${r.length} errors)`), {
1196
- errors: r,
1197
- format: () => N(r)
1198
- };
1199
- } catch (n) {
1200
- const r = new Error(`[DbcTsLinter#lint] Lint failed for ${e}`, { cause: n });
1201
- _.error(`[DbcTsLinter#lint] [parsing → failed] ${e}`, {
1202
- error: r
1203
- });
1204
- const a = {
1205
- file: e,
1206
- line: 1,
1207
- col: 1,
1208
- severity: "error",
1209
- code: P,
1210
- message: `Unexpected error: ${String(n)}`
1211
- };
1212
- return { errors: [a], format: () => N([a]) };
1213
- }
1214
- }
1215
- /**
1216
- * @param filePath Path to the source file to check.
1217
- * @param [options] Optional lint configuration.
1218
- * @returns Combined report with errors and count of auto-fixed issues.
1219
- * @see {DbcLinter#lintAndFix} in ../../dbc-linter.types.ts
1220
- */
1221
- async lintAndFix(e, t) {
1222
- _.debug(`[DbcTsLinter#lintAndFix] [idle → linting] ${e}`);
1223
- try {
1224
- const n = await this.lint(e, t), r = n.errors.length, a = await this._astAdapter.parseFile(e, t?.content);
1225
- if (!a.ok)
1226
- return {
1227
- errors: n.errors,
1228
- autoFixed: 0,
1229
- format: () => N(n.errors)
1230
- };
1231
- let i = t?.content ?? L(e, "utf8");
1232
- const p = this._collectContracts(a.exported);
1233
- let u = !1;
1234
- for (const f of p) {
1235
- const m = f.text;
1236
- let o = m;
1237
- if (o = this._expandToMultiline(o, f.kind), o = this._removeRedundantTypes(o), o = this._normalizeParamBrackets(o, f.signature), o = this._removeExtraParams(o, f.signature), o = this._removeUnexpectedReturns(o, f.kind, f.signature), o = this._reorderParams(o, f.signature), o = this._reorderTags(o), o = this._normalizeMultiLine(o), o !== m) {
1238
- let c = o;
1239
- if (o.includes(`
1240
- `) && !m.includes(`
1241
- `)) {
1242
- const b = i.indexOf(m), I = b > 0 ? i.lastIndexOf(`
1243
- `, b - 1) : -1, R = i.slice(I + 1, b), w = o.split(`
1244
- `);
1245
- for (let k = 1; k < w.length; k += 1)
1246
- w[k] = R + " " + w[k].trimStart();
1247
- w[w.length - 1] = R + "*/", c = w.join(`
1248
- `);
1249
- }
1250
- i = i.replace(m, c), u = !0;
1251
- }
1252
- }
1253
- u ? (De(e, i, "utf8"), _.info(`[DbcTsLinter#lintAndFix] [fixing → written] ${e}`)) : _.info(`[DbcTsLinter#lintAndFix] [linting → clean] ${e} (nothing to fix)`);
1254
- const l = u ? await this.lint(e, { strategy: "full" }) : n, d = l.errors.length, y = r - d;
1255
- return _.info(`[DbcTsLinter#lintAndFix] [written → done] ${e} (autoFixed=${y})`), {
1256
- errors: l.errors,
1257
- autoFixed: y >= 0 ? y : 0,
1258
- format: () => N(l.errors)
1259
- };
1260
- } catch (n) {
1261
- const r = new Error(`[DbcTsLinter#lintAndFix] Fix failed for ${e}`, { cause: n });
1262
- return _.error(`[DbcTsLinter#lintAndFix] [linting → failed] ${e}`, { error: r }), {
1263
- errors: [
1264
- {
1265
- file: e,
1266
- line: 1,
1267
- col: 1,
1268
- severity: "error",
1269
- code: P,
1270
- message: `Autofix error: ${String(n)}`
1271
- }
1272
- ],
1273
- autoFixed: 0,
1274
- format: () => N([
1275
- {
1276
- file: e,
1277
- line: 1,
1278
- col: 1,
1279
- severity: "error",
1280
- code: P,
1281
- message: `Autofix error: ${String(n)}`
1282
- }
1283
- ])
1284
- };
1285
- }
1286
- }
1287
- // #region START_LINT_HELPERS
1288
- /**
1289
- * @purpose Walk all exported entities and their members, collecting lint errors.
1290
- * @param entities Exported entities from AST parse result.
1291
- * @param filePath Source file path for error attribution.
1292
- * @returns Array of lint errors collected from entities and members.
1293
- */
1294
- _lintEntities(e, t) {
1295
- const n = [];
1296
- for (const r of e) {
1297
- if (!r.contract)
1298
- n.push(
1299
- S(
1300
- se,
1301
- `Entity '${r.name}' (${r.kind}) is missing a DBC contract`
1302
- )
1303
- );
1304
- else {
1305
- const a = this._validateContract(
1306
- r.contract.text,
1307
- r.signature,
1308
- r.kind,
1309
- t,
1310
- r.contract.startLine,
1311
- r.contract.startCol
1312
- );
1313
- n.push(...a);
1314
- }
1315
- for (const a of r.members)
1316
- if (!a.contract)
1317
- n.push(
1318
- S(
1319
- se,
1320
- `Member '${a.name}' (${a.kind}) of '${r.name}' is missing a DBC contract`
1321
- )
1322
- );
1323
- else {
1324
- const i = this._validateContract(
1325
- a.contract.text,
1326
- a.signature,
1327
- a.kind,
1328
- t,
1329
- a.contract.startLine,
1330
- a.contract.startCol
1331
- );
1332
- n.push(...i);
1333
- }
1334
- }
1335
- return n.map((r, a) => ({
1336
- ...r,
1337
- file: t || r.file,
1338
- line: r.line > 1 ? r.line : a + 1
1339
- }));
1340
- }
1341
- /**
1342
- * @purpose Parse a contract text and validate it, returning both parser issues
1343
- * (translated per FR-23) and structural mismatches via DbcContractMatchValidator.
1344
- * @param contractText Raw JSDoc contract text to parse and validate.
1345
- * @param signature Signature info from AST for parameter/returns matching.
1346
- * @param kind Entity or member kind for validation matrix lookup.
1347
- * @param filePath Source file path for error attribution.
1348
- * @param startLine Contract start line in source for error position.
1349
- * @param startCol Contract start column in source for error position.
1350
- * @returns Array of lint errors from parser issues and structural mismatches.
1351
- */
1352
- _validateContract(e, t, n, r, a, i) {
1353
- const p = [], u = this._parser.parse(e), l = [];
1354
- for (const y of u.entries)
1355
- if (l.push(y), y.inline)
1356
- for (const f of y.inline)
1357
- l.push(f);
1358
- for (const y of l)
1359
- for (const f of y.issues) {
1360
- const m = a + (f.line ?? 1) - 1;
1361
- p.push({
1362
- file: r,
1363
- line: m > 0 ? m : a,
1364
- col: i,
1365
- severity: "error",
1366
- code: f.code,
1367
- message: `Parser issue in contract: ${f.code}`
1368
- });
1369
- }
1370
- const d = wt(l, t, n);
1371
- for (const y of d)
1372
- p.push({
1373
- ...y,
1374
- file: r,
1375
- line: a,
1376
- col: i
1377
- });
1378
- return p;
1379
- }
1380
- // #endregion END_LINT_HELPERS
1381
- // #region START_AUTOFIX_COLLECT
1382
- /** @purpose Internal record of a contract block with context for autofix. */
1383
- _ContractBlock = class {
1384
- text;
1385
- kind;
1386
- signature;
1387
- constructor(e, t, n) {
1388
- this.text = e, this.kind = t, this.signature = n;
1389
- }
1390
- };
1391
- /**
1392
- * @purpose Walk entities and members, collecting all JSDoc contract blocks
1393
- * with their associated kind and signature for autofix processing.
1394
- * @param entities Exported entities from AST parse result.
1395
- * @returns Array of contract blocks with kind and signature context.
1396
- */
1397
- _collectContracts(e) {
1398
- const t = [];
1399
- for (const n of e) {
1400
- n.contract && t.push(new this._ContractBlock(n.contract.text, n.kind, n.signature));
1401
- for (const r of n.members)
1402
- r.contract && t.push(new this._ContractBlock(r.contract.text, r.kind, r.signature));
1403
- }
1404
- return t;
1405
- }
1406
- // #endregion END_AUTOFIX_COLLECT
1407
- // #region START_AUTOFIX_CHAIN_METHODS
1408
- /**
1409
- * @purpose Expand single-line pipe contracts to multi-line for callable kinds or >3 tags.
1410
- * @param jsdocText Raw JSDoc comment text.
1411
- * @param [kind] Entity kind — callable kinds or pipe with >3 tags are expanded.
1412
- * @returns JSDoc text in multi-line format if applicable.
1413
- */
1414
- _expandToMultiline(e, t) {
1415
- if (e.includes(`
1416
- `) || !e.includes(" | @")) return e;
1417
- const r = e.replace(/^\s*\/\*\*\s*/, "").replace(/\s*\*\/\s*$/, "").split(" | @");
1418
- if (r.length === 0 || r.length <= 3 && !V.has(t ?? "")) return e;
1419
- const i = e.match(/^(\s*)/), p = i ? i[1] : "", u = p + " ", l = [p + "/**"];
1420
- l.push(u + "* " + (r[0] ?? "").trim());
1421
- for (let d = 1; d < r.length; d += 1)
1422
- l.push(u + "* @" + (r[d] ?? "").trim());
1423
- return l.push(p + " */"), l.join(`
1424
- `);
1425
- }
1426
- /**
1427
- * @purpose Remove redundant `{dataType}` annotations from @param and @returns tags.
1428
- * @param jsdocText Raw JSDoc comment text.
1429
- * @returns JSDoc text with types stripped.
1430
- */
1431
- _removeRedundantTypes(e) {
1432
- return e.replace(/(\*?\s*)@(param|returns)\s+\{[^}]*\}\s+/g, "$1@$2 ");
1433
- }
1434
- /**
1435
- * @purpose Adjust @param specifiers to wrap optional params in `[brackets]` and remove brackets from required params.
1436
- * @param jsdocText Raw JSDoc comment text.
1437
- * @param signature Signature with optionality flags.
1438
- * @returns JSDoc text with normalized brackets.
1439
- */
1440
- _normalizeParamBrackets(e, t) {
1441
- const n = new Map(t.params.map((i) => [i.name, i]));
1442
- if (!e.includes(`
1443
- `)) {
1444
- const i = e.match(/^(\s*)/), p = i ? i[1] : "", d = e.replace(/^\s*\/\*\*\s*/, "").replace(/\s*\*\/\s*$/, "").split(" | ").map((y) => {
1445
- const f = y.trim();
1446
- if (!/^@param\s/.test(f)) return y;
1447
- const m = this._extractParamSpecifier(f), o = A(m), c = n.get(o);
1448
- if (!c || c.isRest) return y;
1449
- const b = c.optional, I = m.startsWith("[") && m.endsWith("]");
1450
- if (b === I) return y;
1451
- let R;
1452
- b ? R = m.startsWith("...") ? "[..." + o + "]" : "[" + o + "]" : R = m.startsWith("...") ? "..." + o : o;
1453
- const w = m.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1454
- return y.replace(
1455
- new RegExp(`(@param\\s+(?:\\{[^}]*\\}\\s+)?)${w}`),
1456
- `$1${R}`
1457
- );
1458
- });
1459
- return p + "/** " + d.join(" | ") + " */";
1460
- }
1461
- const r = e.split(`
1462
- `), a = [];
1463
- for (const i of r) {
1464
- let p = i.trim();
1465
- if (p.startsWith("* ") ? p = p.slice(2).trimStart() : p.startsWith("*") && (p = p.slice(1).trimStart()), !/^@param\s/.test(p)) {
1466
- a.push(i);
1467
- continue;
1468
- }
1469
- const u = this._extractParamSpecifier(p), l = A(u), d = n.get(l);
1470
- if (!d || d.isRest) {
1471
- a.push(i);
1472
- continue;
1473
- }
1474
- const y = d.optional, f = u.startsWith("[") && u.endsWith("]");
1475
- if (y === f) {
1476
- a.push(i);
1477
- continue;
1478
- }
1479
- let m;
1480
- y ? m = u.startsWith("...") ? "[..." + l + "]" : "[" + l + "]" : m = u.startsWith("...") ? "..." + l : l;
1481
- const o = u.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), c = i.replace(
1482
- new RegExp(`(@param\\s+(?:\\{[^}]*\\}\\s+)?)${o}`),
1483
- `$1${m}`
1484
- );
1485
- a.push(c);
1486
- }
1487
- return a.join(`
1488
- `);
1489
- }
1490
- /**
1491
- * @purpose Remove @param entries whose specifier does not match any signature parameter. | Handles both multi-line and single-line contracts.
1492
- * @param jsdocText Raw JSDoc comment text.
1493
- * @param signature Signature to match against.
1494
- * @returns JSDoc text with extra params removed.
1495
- */
1496
- _removeExtraParams(e, t) {
1497
- const n = new Set(t.params.map((p) => p.name)), r = e.split(`
1498
- `), a = [];
1499
- let i = !1;
1500
- for (const p of r) {
1501
- let u = p.trim();
1502
- if (u === "*/" || u === "*/ ") {
1503
- i = !1, a.push(p);
1504
- continue;
1505
- }
1506
- if (u.startsWith("* ") ? u = u.slice(2).trimStart() : u.startsWith("*") && (u = u.slice(1).trimStart()), /^@param\s/.test(u)) {
1507
- const l = this._extractParamSpecifier(u), d = A(l);
1508
- n.has(d) ? (i = !1, a.push(p)) : i = !0;
1509
- } else /^@\w/.test(u) ? (i = !1, a.push(p)) : i || a.push(p);
1510
- }
1511
- return a.join(`
1512
- `);
1513
- }
1514
- /**
1515
- * @purpose Remove @returns tag when the kind does not allow it or return type is void.
1516
- * @param jsdocText Raw JSDoc comment text.
1517
- * @param kind Entity or member kind.
1518
- * @param [signature] Optional signature info to check void return type.
1519
- * @returns JSDoc text with unexpected @returns removed.
1520
- */
1521
- _removeUnexpectedReturns(e, t, n) {
1522
- if (!(X.has(t) || K.has(t) && n?.returnType === "void"))
1523
- return e;
1524
- const a = e.split(`
1525
- `), i = [];
1526
- let p = !1;
1527
- for (const u of a) {
1528
- let l = u.trim();
1529
- if (l === "*/" || l === "*/ ") {
1530
- p = !1, i.push(u);
1531
- continue;
1532
- }
1533
- l.startsWith("* ") ? l = l.slice(2).trimStart() : l.startsWith("*") && (l = l.slice(1).trimStart()), /^@returns\b/.test(l) ? p = !0 : /^@\w/.test(l) ? (p = !1, i.push(u)) : p || i.push(u);
1534
- }
1535
- return i.join(`
1536
- `);
1537
- }
1538
- /**
1539
- * @purpose Reorder @param entries to match the signature parameter order.
1540
- * @param jsdocText Raw JSDoc comment text.
1541
- * @param signature Signature with desired parameter order.
1542
- * @returns JSDoc text with params reordered.
1543
- */
1544
- _reorderParams(e, t) {
1545
- if (t.params.length === 0)
1546
- return e;
1547
- const n = t.params.map((o) => o.name), r = e.split(`
1548
- `), a = [], i = [], p = [];
1549
- let u = !1, l = !1, d = null;
1550
- for (const o of r) {
1551
- let c = o.trim();
1552
- if (c.startsWith("* ") ? c = c.slice(2).trimStart() : c.startsWith("*") && (c = c.slice(1).trimStart()), !u && !l && /^@param\s/.test(c) && (u = !0), !u && !l) {
1553
- if (i.push(o), /^@param\s/.test(c)) {
1554
- u = !0;
1555
- const b = this._extractParamSpecifier(c);
1556
- d = {
1557
- name: A(b),
1558
- lines: [o]
1559
- };
1
+ import { g as W } from "./_commonjsHelpers-DaMA6jEr.js";
2
+ import C from "path";
3
+ import X from "fs";
4
+ import Z from "os";
5
+ function ee(p, u) {
6
+ for (var d = 0; d < u.length; d++) {
7
+ const i = u[d];
8
+ if (typeof i != "string" && !Array.isArray(i)) {
9
+ for (const l in i)
10
+ if (l !== "default" && !(l in p)) {
11
+ const y = Object.getOwnPropertyDescriptor(i, l);
12
+ y && Object.defineProperty(p, l, y.get ? y : {
13
+ enumerable: !0,
14
+ get: () => i[l]
15
+ });
1560
16
  }
1561
- continue;
1562
- }
1563
- if (u)
1564
- if (/^@param\s/.test(c)) {
1565
- d && a.push(d);
1566
- const b = this._extractParamSpecifier(c);
1567
- d = {
1568
- name: A(b),
1569
- lines: [o]
1570
- };
1571
- } else /^@\w/.test(c) ? (d && (a.push(d), d = null), u = !1, l = !0, p.push(o)) : d && d.lines.push(o);
1572
- else l && p.push(o);
1573
- }
1574
- d && a.push(d);
1575
- const y = /* @__PURE__ */ new Map();
1576
- for (const o of a)
1577
- y.set(o.name, o);
1578
- const f = [];
1579
- for (const o of n) {
1580
- const c = y.get(o);
1581
- c && (f.push(c), y.delete(o));
1582
- }
1583
- for (const [, o] of y)
1584
- f.push(o);
1585
- const m = [...i];
1586
- for (const o of f)
1587
- m.push(...o.lines);
1588
- return m.push(...p), m.join(`
1589
- `);
1590
- }
1591
- /**
1592
- * @purpose Reorder contract tags to canonical DBC order. | Order: description → purpose → implements → invariant → pre → param(*) → | throws → returns → post → sideEffect → other tags.
1593
- * @param jsdocText Raw JSDoc comment text.
1594
- * @returns JSDoc text with tags in canonical order.
1595
- */
1596
- _reorderTags(e) {
1597
- const t = /* @__PURE__ */ new Map([
1598
- ["purpose", 0],
1599
- ["implements", 1],
1600
- ["invariant", 2],
1601
- ["pre", 3],
1602
- ["param", 4],
1603
- ["throws", 5],
1604
- ["returns", 6],
1605
- ["post", 7],
1606
- ["sideEffect", 8],
1607
- ["see", 9],
1608
- ["consumer", 9],
1609
- ["consumers", 9],
1610
- ["author", 9],
1611
- ["deprecated", 9]
1612
- ]), n = e.split(`
1613
- `), r = [], a = [];
1614
- let i = null, p = !1, u = null;
1615
- for (const y of n) {
1616
- let f = y.trim();
1617
- if (f === "*/" || f === "*/ ") {
1618
- u = y;
1619
- continue;
1620
- }
1621
- f.startsWith("* ") ? f = f.slice(2).trimStart() : f.startsWith("*") && (f = f.slice(1).trimStart());
1622
- const m = f.match(/^@(\w+)/);
1623
- if (!p && !m)
1624
- r.push(y);
1625
- else if (m) {
1626
- p = !0;
1627
- const o = m[1];
1628
- i && a.push(i), i = {
1629
- tag: o,
1630
- order: t.get(o) ?? 99,
1631
- lines: [y]
1632
- };
1633
- } else p && i ? i.lines.push(y) : r.push(y);
1634
- }
1635
- i && a.push(i);
1636
- const l = a.map((y, f) => ({ ...y, origIdx: f }));
1637
- l.sort((y, f) => y.order !== f.order ? y.order - f.order : y.origIdx - f.origIdx);
1638
- const d = [...r];
1639
- for (const y of l)
1640
- d.push(...y.lines);
1641
- return u !== null && d.push(u), d.join(`
1642
- `);
1643
- }
1644
- /**
1645
- * @purpose Normalize multi-line JSDoc format: ensure closing marker is on its own line | and opening marker is bare (no content after it). | Preserves original indentation by patching specific format issues | rather than reconstructing the entire block.
1646
- * @invariant Single-line contracts pass through unchanged.
1647
- * @param jsdocText Raw JSDoc comment text.
1648
- * @returns Normalized JSDoc text.
1649
- */
1650
- _normalizeMultiLine(e) {
1651
- if (!e.includes(`
1652
- `))
1653
- return e;
1654
- const t = e.split(`
1655
- `), r = t[0].match(/^(\s*\/\*\*)\s+(.+)/);
1656
- if (r) {
1657
- t[0] = r[1];
1658
- const u = this._detectContentIndent(t);
1659
- t.splice(1, 0, u + "* " + r[2]);
1660
17
  }
1661
- const a = t.length - 1, p = t[a].match(/^(\s*)\*\s+(.+?)\s*\*\/\s*$/);
1662
- if (p) {
1663
- const u = p[1];
1664
- t[a] = u + "* " + p[2];
1665
- const l = u.length > 0 ? u.slice(0, -1) : "";
1666
- t.push(l + " */");
1667
- }
1668
- for (let u = 1; u < t.length - 1; u += 1) {
1669
- const l = t[u];
1670
- if (l.trim() !== "" && !/^\s*\*\s/.test(l)) {
1671
- const d = l.match(/^(\s*)/), y = d ? d[1] : "";
1672
- t[u] = y + "* " + l.trimStart();
1673
- }
1674
- }
1675
- return t.join(`
1676
- `);
1677
- }
1678
- /**
1679
- * @purpose Detect the indentation pattern used by content lines. | Returns the whitespace prefix before `*` on the first content line, | or the indent of the opening line as fallback.
1680
- * @param lines All lines of the JSDoc block (may be mutated by Step 1).
1681
- * @returns Indent string for `*`-prefixed content lines.
1682
- */
1683
- _detectContentIndent(e) {
1684
- for (let n = 1; n < e.length - 1; n += 1) {
1685
- const r = e[n].match(/^(\s*)\*\s/);
1686
- if (r)
1687
- return r[1];
1688
- }
1689
- return (e[0].match(/^(\s*)/)?.[1] ?? "") + " ";
1690
18
  }
1691
- /**
1692
- * @purpose Attempt to convert a multi-line JSDoc comment to single-line format. | Inlines only single-tag contracts (1 @tag); multi-tag contracts stay multi-line. | Performs a dry-run through the parser: if the inline version introduces new | parse errors, the original multi-line text is returned unchanged.
1693
- * @param jsdocText Raw JSDoc comment text.
1694
- * @returns Inline text if safe, otherwise the original text.
1695
- */
1696
- _inlineIfSafe(e) {
1697
- if (!e.includes(`
1698
- `))
1699
- return e;
1700
- const t = e.replace(/^\/\*\*\s*/, "").replace(/\s*\*\/\s*$/, "").split(`
1701
- `).map((l) => l.replace(/^\s*\*\s?/, "").trim()).filter((l) => l.length > 0);
1702
- if (t.length === 0 || t.filter((l) => /^@\w/.test(l)).length > 1)
1703
- return e;
1704
- const r = e.match(/^(\s*)/), i = (r ? r[1] : "") + "/** " + t.join(" | ") + " */";
1705
- return this._parser.parse(i).entries.some((l) => l.issues.length > 0) ? e : i;
1706
- }
1707
- /**
1708
- * @purpose Extract the specifier (parameter name) from a @param tag line. | Example: `@param userId Description` → `userId`
1709
- * @param line Trimmed line content starting with `@param`.
1710
- * @returns The specifier or empty string.
1711
- */
1712
- _extractParamSpecifier(e) {
1713
- const r = e.replace(/^(\*?\s*)?@param\s+/, "").replace(/^\{[^}]*\}\s+/, "").match(/^(\S+)/);
1714
- return r ? r[1] : "";
1715
- }
1716
- // #endregion END_AUTOFIX_CHAIN_METHODS
19
+ return Object.freeze(Object.defineProperty(p, Symbol.toStringTag, { value: "Module" }));
1717
20
  }
1718
- function Y(s) {
1719
- throw new Error('Could not dynamically require "' + s + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
21
+ function v(p) {
22
+ throw new Error('Could not dynamically require "' + p + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
1720
23
  }
1721
- var z = { exports: {} }, D = { exports: {} }, G, le;
1722
- function It() {
1723
- if (le) return G;
1724
- le = 1;
1725
- var s = Le, e = _e, t = Me, n = typeof __webpack_require__ == "function" ? __non_webpack_require__ : Y, r = process.config && process.config.variables || {}, a = !!process.env.PREBUILDS_ONLY, i = process.versions.modules, p = $e() ? "electron" : Ee() ? "node-webkit" : "node", u = process.env.npm_config_arch || t.arch(), l = process.env.npm_config_platform || t.platform(), d = process.env.LIBC || (ke(l) ? "musl" : "glibc"), y = process.env.ARM_VERSION || (u === "arm64" ? "8" : r.arm_version) || "", f = (process.versions.uv || "").split(".")[0];
1726
- G = m;
1727
- function m(h) {
1728
- return n(m.resolve(h));
24
+ var b = { exports: {} }, f = { exports: {} }, g, A;
25
+ function te() {
26
+ if (A) return g;
27
+ A = 1;
28
+ var p = X, u = C, d = Z, i = typeof __webpack_require__ == "function" ? __non_webpack_require__ : v, l = process.config && process.config.variables || {}, y = !!process.env.PREBUILDS_ONLY, j = process.versions.modules, o = M() ? "electron" : J() ? "node-webkit" : "node", _ = process.env.npm_config_arch || d.arch(), c = process.env.npm_config_platform || d.platform(), w = process.env.LIBC || (V(c) ? "musl" : "glibc"), q = process.env.ARM_VERSION || (_ === "arm64" ? "8" : l.arm_version) || "", k = (process.versions.uv || "").split(".")[0];
29
+ g = s;
30
+ function s(e) {
31
+ return i(s.resolve(e));
1729
32
  }
1730
- m.resolve = m.path = function(h) {
1731
- h = e.resolve(h || ".");
33
+ s.resolve = s.path = function(e) {
34
+ e = u.resolve(e || ".");
1732
35
  try {
1733
- var q = n(e.join(h, "package.json")).name.toUpperCase().replace(/-/g, "_");
1734
- process.env[q + "_PREBUILD"] && (h = process.env[q + "_PREBUILD"]);
36
+ var r = i(u.join(e, "package.json")).name.toUpperCase().replace(/-/g, "_");
37
+ process.env[r + "_PREBUILD"] && (e = process.env[r + "_PREBUILD"]);
1735
38
  } catch {
1736
39
  }
1737
- if (!a) {
1738
- var g = c(e.join(h, "build/Release"), b);
1739
- if (g) return g;
1740
- var v = c(e.join(h, "build/Debug"), b);
1741
- if (v) return v;
1742
- }
1743
- var T = ee(h);
1744
- if (T) return T;
1745
- var x = ee(e.dirname(process.execPath));
1746
- if (x) return x;
1747
- var Ae = [
1748
- "platform=" + l,
1749
- "arch=" + u,
1750
- "runtime=" + p,
1751
- "abi=" + i,
1752
- "uv=" + f,
1753
- y ? "armv=" + y : "",
1754
- "libc=" + d,
40
+ if (!y) {
41
+ var t = z(u.join(e, "build/Release"), $);
42
+ if (t) return t;
43
+ var n = z(u.join(e, "build/Debug"), $);
44
+ if (n) return n;
45
+ }
46
+ var m = S(e);
47
+ if (m) return m;
48
+ var a = S(u.dirname(process.execPath));
49
+ if (a) return a;
50
+ var Y = [
51
+ "platform=" + c,
52
+ "arch=" + _,
53
+ "runtime=" + o,
54
+ "abi=" + j,
55
+ "uv=" + k,
56
+ q ? "armv=" + q : "",
57
+ "libc=" + w,
1755
58
  "node=" + process.versions.node,
1756
59
  process.versions.electron ? "electron=" + process.versions.electron : "",
1757
60
  typeof __webpack_require__ == "function" ? "webpack=true" : ""
1758
61
  // eslint-disable-line
1759
62
  ].filter(Boolean).join(" ");
1760
- throw new Error("No native build was found for " + Ae + `
1761
- loaded from: ` + h + `
63
+ throw new Error("No native build was found for " + Y + `
64
+ loaded from: ` + e + `
1762
65
  `);
1763
- function ee(U) {
1764
- var Te = o(e.join(U, "prebuilds")).map(I), te = Te.filter(R(l, u)).sort(w)[0];
1765
- if (te) {
1766
- var re = e.join(U, "prebuilds", te.name), Ne = o(re).map(k), je = Ne.filter(Q(p, i)), ne = je.sort(Z(p))[0];
1767
- if (ne) return e.join(re, ne.file);
66
+ function S(h) {
67
+ var H = x(u.join(h, "prebuilds")).map(T), D = H.filter(N(c, _)).sort(R)[0];
68
+ if (D) {
69
+ var P = u.join(h, "prebuilds", D.name), K = x(P).map(B), Q = K.filter(E(o, j)), I = Q.sort(O(o))[0];
70
+ if (I) return u.join(P, I.file);
1768
71
  }
1769
72
  }
1770
73
  };
1771
- function o(h) {
74
+ function x(e) {
1772
75
  try {
1773
- return s.readdirSync(h);
76
+ return p.readdirSync(e);
1774
77
  } catch {
1775
78
  return [];
1776
79
  }
1777
80
  }
1778
- function c(h, q) {
1779
- var g = o(h).filter(q);
1780
- return g[0] && e.join(h, g[0]);
1781
- }
1782
- function b(h) {
1783
- return /\.node$/.test(h);
1784
- }
1785
- function I(h) {
1786
- var q = h.split("-");
1787
- if (q.length === 2) {
1788
- var g = q[0], v = q[1].split("+");
1789
- if (g && v.length && v.every(Boolean))
1790
- return { name: h, platform: g, architectures: v };
1791
- }
1792
- }
1793
- function R(h, q) {
1794
- return function(g) {
1795
- return g == null || g.platform !== h ? !1 : g.architectures.includes(q);
1796
- };
1797
- }
1798
- function w(h, q) {
1799
- return h.architectures.length - q.architectures.length;
1800
- }
1801
- function k(h) {
1802
- var q = h.split("."), g = q.pop(), v = { file: h, specificity: 0 };
1803
- if (g === "node") {
1804
- for (var T = 0; T < q.length; T++) {
1805
- var x = q[T];
1806
- if (x === "node" || x === "electron" || x === "node-webkit")
1807
- v.runtime = x;
1808
- else if (x === "napi")
1809
- v.napi = !0;
1810
- else if (x.slice(0, 3) === "abi")
1811
- v.abi = x.slice(3);
1812
- else if (x.slice(0, 2) === "uv")
1813
- v.uv = x.slice(2);
1814
- else if (x.slice(0, 4) === "armv")
1815
- v.armv = x.slice(4);
1816
- else if (x === "glibc" || x === "musl")
1817
- v.libc = x;
81
+ function z(e, r) {
82
+ var t = x(e).filter(r);
83
+ return t[0] && u.join(e, t[0]);
84
+ }
85
+ function $(e) {
86
+ return /\.node$/.test(e);
87
+ }
88
+ function T(e) {
89
+ var r = e.split("-");
90
+ if (r.length === 2) {
91
+ var t = r[0], n = r[1].split("+");
92
+ if (t && n.length && n.every(Boolean))
93
+ return { name: e, platform: t, architectures: n };
94
+ }
95
+ }
96
+ function N(e, r) {
97
+ return function(t) {
98
+ return t == null || t.platform !== e ? !1 : t.architectures.includes(r);
99
+ };
100
+ }
101
+ function R(e, r) {
102
+ return e.architectures.length - r.architectures.length;
103
+ }
104
+ function B(e) {
105
+ var r = e.split("."), t = r.pop(), n = { file: e, specificity: 0 };
106
+ if (t === "node") {
107
+ for (var m = 0; m < r.length; m++) {
108
+ var a = r[m];
109
+ if (a === "node" || a === "electron" || a === "node-webkit")
110
+ n.runtime = a;
111
+ else if (a === "napi")
112
+ n.napi = !0;
113
+ else if (a.slice(0, 3) === "abi")
114
+ n.abi = a.slice(3);
115
+ else if (a.slice(0, 2) === "uv")
116
+ n.uv = a.slice(2);
117
+ else if (a.slice(0, 4) === "armv")
118
+ n.armv = a.slice(4);
119
+ else if (a === "glibc" || a === "musl")
120
+ n.libc = a;
1818
121
  else
1819
122
  continue;
1820
- v.specificity++;
123
+ n.specificity++;
1821
124
  }
1822
- return v;
125
+ return n;
1823
126
  }
1824
127
  }
1825
- function Q(h, q) {
1826
- return function(g) {
1827
- return !(g == null || g.runtime && g.runtime !== h && !Ce(g) || g.abi && g.abi !== q && !g.napi || g.uv && g.uv !== f || g.armv && g.armv !== y || g.libc && g.libc !== d);
128
+ function E(e, r) {
129
+ return function(t) {
130
+ return !(t == null || t.runtime && t.runtime !== e && !F(t) || t.abi && t.abi !== r && !t.napi || t.uv && t.uv !== k || t.armv && t.armv !== q || t.libc && t.libc !== w);
1828
131
  };
1829
132
  }
1830
- function Ce(h) {
1831
- return h.runtime === "node" && h.napi;
133
+ function F(e) {
134
+ return e.runtime === "node" && e.napi;
1832
135
  }
1833
- function Z(h) {
1834
- return function(q, g) {
1835
- return q.runtime !== g.runtime ? q.runtime === h ? -1 : 1 : q.abi !== g.abi ? q.abi ? -1 : 1 : q.specificity !== g.specificity ? q.specificity > g.specificity ? -1 : 1 : 0;
136
+ function O(e) {
137
+ return function(r, t) {
138
+ return r.runtime !== t.runtime ? r.runtime === e ? -1 : 1 : r.abi !== t.abi ? r.abi ? -1 : 1 : r.specificity !== t.specificity ? r.specificity > t.specificity ? -1 : 1 : 0;
1836
139
  };
1837
140
  }
1838
- function Ee() {
141
+ function J() {
1839
142
  return !!(process.versions && process.versions.nw);
1840
143
  }
1841
- function $e() {
144
+ function M() {
1842
145
  return process.versions && process.versions.electron || process.env.ELECTRON_RUN_AS_NODE ? !0 : typeof window < "u" && window.process && window.process.type === "renderer";
1843
146
  }
1844
- function ke(h) {
1845
- return h === "linux" && s.existsSync("/etc/alpine-release");
147
+ function V(e) {
148
+ return e === "linux" && p.existsSync("/etc/alpine-release");
1846
149
  }
1847
- return m.parseTags = k, m.matchTags = Q, m.compareTags = Z, m.parseTuple = I, m.matchTuple = R, m.compareTuples = w, G;
150
+ return s.parseTags = B, s.matchTags = E, s.compareTags = O, s.parseTuple = T, s.matchTuple = N, s.compareTuples = R, g;
1848
151
  }
1849
- var me;
1850
- function St() {
1851
- if (me) return D.exports;
1852
- me = 1;
1853
- const s = typeof __webpack_require__ == "function" ? __non_webpack_require__ : Y;
1854
- return typeof s.addon == "function" ? D.exports = s.addon.bind(s) : D.exports = It(), D.exports;
152
+ var G;
153
+ function re() {
154
+ if (G) return f.exports;
155
+ G = 1;
156
+ const p = typeof __webpack_require__ == "function" ? __non_webpack_require__ : v;
157
+ return typeof p.addon == "function" ? f.exports = p.addon.bind(p) : f.exports = te(), f.exports;
1855
158
  }
1856
- const Rt = /* @__PURE__ */ JSON.parse('[{"type":"declaration","named":true,"subtypes":[{"type":"abstract_class_declaration","named":true},{"type":"ambient_declaration","named":true},{"type":"class_declaration","named":true},{"type":"enum_declaration","named":true},{"type":"function_declaration","named":true},{"type":"function_signature","named":true},{"type":"generator_function_declaration","named":true},{"type":"import_alias","named":true},{"type":"interface_declaration","named":true},{"type":"internal_module","named":true},{"type":"lexical_declaration","named":true},{"type":"module","named":true},{"type":"type_alias_declaration","named":true},{"type":"variable_declaration","named":true}]},{"type":"expression","named":true,"subtypes":[{"type":"as_expression","named":true},{"type":"assignment_expression","named":true},{"type":"augmented_assignment_expression","named":true},{"type":"await_expression","named":true},{"type":"binary_expression","named":true},{"type":"instantiation_expression","named":true},{"type":"internal_module","named":true},{"type":"new_expression","named":true},{"type":"primary_expression","named":true},{"type":"satisfies_expression","named":true},{"type":"ternary_expression","named":true},{"type":"type_assertion","named":true},{"type":"unary_expression","named":true},{"type":"update_expression","named":true},{"type":"yield_expression","named":true}]},{"type":"pattern","named":true,"subtypes":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},{"type":"primary_expression","named":true,"subtypes":[{"type":"array","named":true},{"type":"arrow_function","named":true},{"type":"call_expression","named":true},{"type":"class","named":true},{"type":"false","named":true},{"type":"function_expression","named":true},{"type":"generator_function","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"meta_property","named":true},{"type":"non_null_expression","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"object","named":true},{"type":"parenthesized_expression","named":true},{"type":"regex","named":true},{"type":"string","named":true},{"type":"subscript_expression","named":true},{"type":"super","named":true},{"type":"template_string","named":true},{"type":"this","named":true},{"type":"true","named":true},{"type":"undefined","named":true}]},{"type":"primary_type","named":true,"subtypes":[{"type":"array_type","named":true},{"type":"conditional_type","named":true},{"type":"const","named":false},{"type":"existential_type","named":true},{"type":"flow_maybe_type","named":true},{"type":"generic_type","named":true},{"type":"index_type_query","named":true},{"type":"intersection_type","named":true},{"type":"literal_type","named":true},{"type":"lookup_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"object_type","named":true},{"type":"parenthesized_type","named":true},{"type":"predefined_type","named":true},{"type":"template_literal_type","named":true},{"type":"this_type","named":true},{"type":"tuple_type","named":true},{"type":"type_identifier","named":true},{"type":"type_query","named":true},{"type":"union_type","named":true}]},{"type":"statement","named":true,"subtypes":[{"type":"break_statement","named":true},{"type":"continue_statement","named":true},{"type":"debugger_statement","named":true},{"type":"declaration","named":true},{"type":"do_statement","named":true},{"type":"empty_statement","named":true},{"type":"export_statement","named":true},{"type":"expression_statement","named":true},{"type":"for_in_statement","named":true},{"type":"for_statement","named":true},{"type":"if_statement","named":true},{"type":"import_statement","named":true},{"type":"labeled_statement","named":true},{"type":"return_statement","named":true},{"type":"statement_block","named":true},{"type":"switch_statement","named":true},{"type":"throw_statement","named":true},{"type":"try_statement","named":true},{"type":"while_statement","named":true},{"type":"with_statement","named":true}]},{"type":"type","named":true,"subtypes":[{"type":"call_expression","named":true},{"type":"constructor_type","named":true},{"type":"function_type","named":true},{"type":"infer_type","named":true},{"type":"member_expression","named":true},{"type":"primary_type","named":true},{"type":"readonly_type","named":true}]},{"type":"abstract_class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"abstract_method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"accessibility_modifier","named":true,"fields":{}},{"type":"adding_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"ambient_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"declaration","named":true},{"type":"property_identifier","named":true},{"type":"statement_block","named":true},{"type":"type","named":true}]}},{"type":"arguments","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}},{"type":"array_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"arrow_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":false,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"as_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"asserts","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true},{"type":"type_predicate","named":true}]}},{"type":"asserts_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true}]}},{"type":"assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"augmented_assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"%=","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+=","named":false},{"type":"-=","named":false},{"type":"/=","named":false},{"type":"<<=","named":false},{"type":">>=","named":false},{"type":">>>=","named":false},{"type":"??=","named":false},{"type":"^=","named":false},{"type":"|=","named":false},{"type":"||=","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"await_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"binary_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"private_property_identifier","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!=","named":false},{"type":"!==","named":false},{"type":"%","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"/","named":false},{"type":"<","named":false},{"type":"<<","named":false},{"type":"<=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>>","named":false},{"type":"??","named":false},{"type":"^","named":false},{"type":"in","named":false},{"type":"instanceof","named":false},{"type":"|","named":false},{"type":"||","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"break_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"call_expression","named":true,"fields":{"arguments":{"multiple":false,"required":true,"types":[{"type":"arguments","named":true},{"type":"template_string","named":true}]},"function":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"call_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"catch_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}}},{"type":"class","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_body","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"abstract_method_signature","named":true},{"type":"class_static_block","named":true},{"type":"index_signature","named":true},{"type":"method_definition","named":true},{"type":"method_signature","named":true},{"type":"public_field_definition","named":true}]}},{"type":"class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_heritage","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"extends_clause","named":true},{"type":"implements_clause","named":true}]}},{"type":"class_static_block","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"computed_property_name","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"conditional_type","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"left":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"constraint","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"construct_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"constructor_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"continue_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"debugger_statement","named":true,"fields":{}},{"type":"decorator","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"parenthesized_expression","named":true}]}},{"type":"default_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"do_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"else_clause","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}},{"type":"empty_statement","named":true,"fields":{}},{"type":"enum_assignment","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"enum_body","named":true,"fields":{"name":{"multiple":true,"required":false,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"enum_assignment","named":true}]}},{"type":"enum_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"enum_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}}},{"type":"existential_type","named":true,"fields":{}},{"type":"export_clause","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"export_specifier","named":true}]}},{"type":"export_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"export_statement","named":true,"fields":{"declaration":{"multiple":false,"required":false,"types":[{"type":"declaration","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"export_clause","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"namespace_export","named":true}]}},{"type":"expression_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"extends_clause","named":true,"fields":{"type_arguments":{"multiple":true,"required":false,"types":[{"type":"type_arguments","named":true}]},"value":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"extends_type_clause","named":true,"fields":{"type":{"multiple":true,"required":true,"types":[{"type":"generic_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]}}},{"type":"finally_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"flow_maybe_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"for_in_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"kind":{"multiple":false,"required":false,"types":[{"type":"const","named":false},{"type":"let","named":false},{"type":"var","named":false}]},"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"in","named":false},{"type":"of","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"for_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":true,"required":true,"types":[{"type":";","named":false},{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"increment":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"initializer":{"multiple":false,"required":true,"types":[{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"lexical_declaration","named":true},{"type":"sequence_expression","named":true},{"type":"variable_declaration","named":true}]}}},{"type":"formal_parameters","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"required_parameter","named":true}]}},{"type":"function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_expression","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true},{"type":"type","named":true},{"type":"type_predicate","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generic_type","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}}},{"type":"identifier","named":true,"fields":{}},{"type":"if_statement","named":true,"fields":{"alternative":{"multiple":false,"required":false,"types":[{"type":"else_clause","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}}},{"type":"implements_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"import","named":true,"fields":{}},{"type":"import_alias","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]}},{"type":"import_attribute","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"object","named":true}]}},{"type":"import_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"named_imports","named":true},{"type":"namespace_import","named":true}]}},{"type":"import_require_clause","named":true,"fields":{"source":{"multiple":false,"required":true,"types":[{"type":"string","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"import_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"import_statement","named":true,"fields":{"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"import_attribute","named":true},{"type":"import_clause","named":true},{"type":"import_require_clause","named":true}]}},{"type":"index_signature","named":true,"fields":{"index_type":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"sign":{"multiple":false,"required":false,"types":[{"type":"+","named":false},{"type":"-","named":false}]},"type":{"multiple":false,"required":true,"types":[{"type":"adding_type_annotation","named":true},{"type":"omitting_type_annotation","named":true},{"type":"opting_type_annotation","named":true},{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"mapped_type_clause","named":true}]}},{"type":"index_type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"infer_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true},{"type":"type_identifier","named":true}]}},{"type":"instantiation_expression","named":true,"fields":{"function":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"import","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"interface_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"interface_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"interface_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"extends_type_clause","named":true}]}},{"type":"internal_module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"intersection_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"labeled_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"label":{"multiple":false,"required":true,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"lexical_declaration","named":true,"fields":{"kind":{"multiple":false,"required":true,"types":[{"type":"const","named":false},{"type":"let","named":false}]}},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"literal_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"false","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"string","named":true},{"type":"true","named":true},{"type":"unary_expression","named":true},{"type":"undefined","named":true}]}},{"type":"lookup_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"mapped_type_clause","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"member_expression","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true}]}}},{"type":"meta_property","named":true,"fields":{}},{"type":"method_definition","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"named_imports","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"import_specifier","named":true}]}},{"type":"namespace_export","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}},{"type":"namespace_import","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"nested_identifier","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"property_identifier","named":true}]}}},{"type":"nested_type_identifier","named":true,"fields":{"module":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]}}},{"type":"new_expression","named":true,"fields":{"arguments":{"multiple":false,"required":false,"types":[{"type":"arguments","named":true}]},"constructor":{"multiple":false,"required":true,"types":[{"type":"primary_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"non_null_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"object","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"method_definition","named":true},{"type":"pair","named":true},{"type":"shorthand_property_identifier","named":true},{"type":"spread_element","named":true}]}},{"type":"object_assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"object_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"object_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"object_assignment_pattern","named":true},{"type":"pair_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]}},{"type":"object_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"omitting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"opting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"optional_chain","named":true,"fields":{}},{"type":"optional_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"optional_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"override_modifier","named":true,"fields":{}},{"type":"pair","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"pair_pattern","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}}},{"type":"parenthesized_expression","named":true,"fields":{"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"parenthesized_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"predefined_type","named":true,"fields":{}},{"type":"program","named":true,"root":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"hash_bang_line","named":true},{"type":"statement","named":true}]}},{"type":"property_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"public_field_definition","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"readonly_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"regex","named":true,"fields":{"flags":{"multiple":false,"required":false,"types":[{"type":"regex_flags","named":true}]},"pattern":{"multiple":false,"required":true,"types":[{"type":"regex_pattern","named":true}]}}},{"type":"required_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"rest_pattern","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"rest_pattern","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]}},{"type":"rest_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"return_statement","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"satisfies_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"sequence_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"spread_element","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"statement_block","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}},{"type":"string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"string_fragment","named":true}]}},{"type":"subscript_expression","named":true,"fields":{"index":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true},{"type":"predefined_type","named":true},{"type":"sequence_expression","named":true},{"type":"string","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]}}},{"type":"switch_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"switch_case","named":true},{"type":"switch_default","named":true}]}},{"type":"switch_case","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}}},{"type":"switch_default","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}}},{"type":"switch_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"switch_body","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"template_literal_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"string_fragment","named":true},{"type":"template_type","named":true}]}},{"type":"template_string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"string_fragment","named":true},{"type":"template_substitution","named":true}]}},{"type":"template_substitution","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"template_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"infer_type","named":true},{"type":"primary_type","named":true}]}},{"type":"ternary_expression","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"throw_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"try_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"finalizer":{"multiple":false,"required":false,"types":[{"type":"finally_clause","named":true}]},"handler":{"multiple":false,"required":false,"types":[{"type":"catch_clause","named":true}]}}},{"type":"tuple_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"optional_type","named":true},{"type":"required_parameter","named":true},{"type":"rest_type","named":true},{"type":"type","named":true}]}},{"type":"type_alias_declaration","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_arguments","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_assertion","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type_arguments","named":true}]}},{"type":"type_parameter","named":true,"fields":{"constraint":{"multiple":false,"required":false,"types":[{"type":"constraint","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"default_type","named":true}]}}},{"type":"type_parameters","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type_parameter","named":true}]}},{"type":"type_predicate","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_predicate_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type_predicate","named":true}]}},{"type":"type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"instantiation_expression","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true},{"type":"this","named":true}]}},{"type":"unary_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"delete","named":false},{"type":"typeof","named":false},{"type":"void","named":false},{"type":"~","named":false}]}}},{"type":"union_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"update_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"++","named":false},{"type":"--","named":false}]}}},{"type":"variable_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"variable_declarator","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"while_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"with_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"yield_expression","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"!","named":false},{"type":"!=","named":false},{"type":"!==","named":false},{"type":"\\"","named":false},{"type":"${","named":false},{"type":"%","named":false},{"type":"%=","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"\'","named":false},{"type":"(","named":false},{"type":")","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+","named":false},{"type":"++","named":false},{"type":"+=","named":false},{"type":"+?:","named":false},{"type":",","named":false},{"type":"-","named":false},{"type":"--","named":false},{"type":"-=","named":false},{"type":"-?:","named":false},{"type":".","named":false},{"type":"...","named":false},{"type":"/","named":false},{"type":"/=","named":false},{"type":":","named":false},{"type":";","named":false},{"type":"<","named":false},{"type":"<<","named":false},{"type":"<<=","named":false},{"type":"<=","named":false},{"type":"=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":"=>","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>=","named":false},{"type":">>>","named":false},{"type":">>>=","named":false},{"type":"?","named":false},{"type":"?.","named":false},{"type":"?:","named":false},{"type":"??","named":false},{"type":"??=","named":false},{"type":"@","named":false},{"type":"[","named":false},{"type":"]","named":false},{"type":"^","named":false},{"type":"^=","named":false},{"type":"`","named":false},{"type":"abstract","named":false},{"type":"accessor","named":false},{"type":"any","named":false},{"type":"as","named":false},{"type":"assert","named":false},{"type":"asserts","named":false},{"type":"async","named":false},{"type":"await","named":false},{"type":"boolean","named":false},{"type":"break","named":false},{"type":"case","named":false},{"type":"catch","named":false},{"type":"class","named":false},{"type":"comment","named":true},{"type":"const","named":false},{"type":"continue","named":false},{"type":"debugger","named":false},{"type":"declare","named":false},{"type":"default","named":false},{"type":"delete","named":false},{"type":"do","named":false},{"type":"else","named":false},{"type":"enum","named":false},{"type":"escape_sequence","named":true},{"type":"export","named":false},{"type":"extends","named":false},{"type":"false","named":true},{"type":"finally","named":false},{"type":"for","named":false},{"type":"from","named":false},{"type":"function","named":false},{"type":"get","named":false},{"type":"global","named":false},{"type":"hash_bang_line","named":true},{"type":"html_comment","named":true},{"type":"if","named":false},{"type":"implements","named":false},{"type":"import","named":false},{"type":"in","named":false},{"type":"infer","named":false},{"type":"instanceof","named":false},{"type":"interface","named":false},{"type":"is","named":false},{"type":"keyof","named":false},{"type":"let","named":false},{"type":"meta","named":false},{"type":"module","named":false},{"type":"namespace","named":false},{"type":"never","named":false},{"type":"new","named":false},{"type":"null","named":true},{"type":"number","named":true},{"type":"number","named":false},{"type":"object","named":false},{"type":"of","named":false},{"type":"override","named":false},{"type":"private","named":false},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"protected","named":false},{"type":"public","named":false},{"type":"readonly","named":false},{"type":"regex_flags","named":true},{"type":"regex_pattern","named":true},{"type":"require","named":false},{"type":"return","named":false},{"type":"satisfies","named":false},{"type":"set","named":false},{"type":"shorthand_property_identifier","named":true},{"type":"shorthand_property_identifier_pattern","named":true},{"type":"statement_identifier","named":true},{"type":"static","named":false},{"type":"string","named":false},{"type":"string_fragment","named":true},{"type":"super","named":true},{"type":"switch","named":false},{"type":"symbol","named":false},{"type":"target","named":false},{"type":"this","named":true},{"type":"this_type","named":true},{"type":"throw","named":false},{"type":"true","named":true},{"type":"try","named":false},{"type":"type","named":false},{"type":"type_identifier","named":true},{"type":"typeof","named":false},{"type":"undefined","named":true},{"type":"unique symbol","named":false},{"type":"unknown","named":false},{"type":"using","named":false},{"type":"var","named":false},{"type":"void","named":false},{"type":"while","named":false},{"type":"with","named":false},{"type":"yield","named":false},{"type":"{","named":false},{"type":"{|","named":false},{"type":"|","named":false},{"type":"|=","named":false},{"type":"||","named":false},{"type":"||=","named":false},{"type":"|}","named":false},{"type":"}","named":false},{"type":"~","named":false}]'), Ct = /* @__PURE__ */ JSON.parse('[{"type":"declaration","named":true,"subtypes":[{"type":"abstract_class_declaration","named":true},{"type":"ambient_declaration","named":true},{"type":"class_declaration","named":true},{"type":"enum_declaration","named":true},{"type":"function_declaration","named":true},{"type":"function_signature","named":true},{"type":"generator_function_declaration","named":true},{"type":"import_alias","named":true},{"type":"interface_declaration","named":true},{"type":"internal_module","named":true},{"type":"lexical_declaration","named":true},{"type":"module","named":true},{"type":"type_alias_declaration","named":true},{"type":"variable_declaration","named":true}]},{"type":"expression","named":true,"subtypes":[{"type":"as_expression","named":true},{"type":"assignment_expression","named":true},{"type":"augmented_assignment_expression","named":true},{"type":"await_expression","named":true},{"type":"binary_expression","named":true},{"type":"instantiation_expression","named":true},{"type":"internal_module","named":true},{"type":"jsx_element","named":true},{"type":"jsx_self_closing_element","named":true},{"type":"new_expression","named":true},{"type":"primary_expression","named":true},{"type":"satisfies_expression","named":true},{"type":"ternary_expression","named":true},{"type":"unary_expression","named":true},{"type":"update_expression","named":true},{"type":"yield_expression","named":true}]},{"type":"pattern","named":true,"subtypes":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},{"type":"primary_expression","named":true,"subtypes":[{"type":"array","named":true},{"type":"arrow_function","named":true},{"type":"call_expression","named":true},{"type":"class","named":true},{"type":"false","named":true},{"type":"function_expression","named":true},{"type":"generator_function","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"meta_property","named":true},{"type":"non_null_expression","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"object","named":true},{"type":"parenthesized_expression","named":true},{"type":"regex","named":true},{"type":"string","named":true},{"type":"subscript_expression","named":true},{"type":"super","named":true},{"type":"template_string","named":true},{"type":"this","named":true},{"type":"true","named":true},{"type":"undefined","named":true}]},{"type":"primary_type","named":true,"subtypes":[{"type":"array_type","named":true},{"type":"conditional_type","named":true},{"type":"const","named":false},{"type":"existential_type","named":true},{"type":"flow_maybe_type","named":true},{"type":"generic_type","named":true},{"type":"index_type_query","named":true},{"type":"intersection_type","named":true},{"type":"literal_type","named":true},{"type":"lookup_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"object_type","named":true},{"type":"parenthesized_type","named":true},{"type":"predefined_type","named":true},{"type":"template_literal_type","named":true},{"type":"this_type","named":true},{"type":"tuple_type","named":true},{"type":"type_identifier","named":true},{"type":"type_query","named":true},{"type":"union_type","named":true}]},{"type":"statement","named":true,"subtypes":[{"type":"break_statement","named":true},{"type":"continue_statement","named":true},{"type":"debugger_statement","named":true},{"type":"declaration","named":true},{"type":"do_statement","named":true},{"type":"empty_statement","named":true},{"type":"export_statement","named":true},{"type":"expression_statement","named":true},{"type":"for_in_statement","named":true},{"type":"for_statement","named":true},{"type":"if_statement","named":true},{"type":"import_statement","named":true},{"type":"labeled_statement","named":true},{"type":"return_statement","named":true},{"type":"statement_block","named":true},{"type":"switch_statement","named":true},{"type":"throw_statement","named":true},{"type":"try_statement","named":true},{"type":"while_statement","named":true},{"type":"with_statement","named":true}]},{"type":"type","named":true,"subtypes":[{"type":"call_expression","named":true},{"type":"constructor_type","named":true},{"type":"function_type","named":true},{"type":"infer_type","named":true},{"type":"member_expression","named":true},{"type":"primary_type","named":true},{"type":"readonly_type","named":true}]},{"type":"abstract_class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"abstract_method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"accessibility_modifier","named":true,"fields":{}},{"type":"adding_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"ambient_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"declaration","named":true},{"type":"property_identifier","named":true},{"type":"statement_block","named":true},{"type":"type","named":true}]}},{"type":"arguments","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}},{"type":"array_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"arrow_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":false,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"as_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"asserts","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true},{"type":"type_predicate","named":true}]}},{"type":"asserts_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true}]}},{"type":"assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"augmented_assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"%=","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+=","named":false},{"type":"-=","named":false},{"type":"/=","named":false},{"type":"<<=","named":false},{"type":">>=","named":false},{"type":">>>=","named":false},{"type":"??=","named":false},{"type":"^=","named":false},{"type":"|=","named":false},{"type":"||=","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"await_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"binary_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"private_property_identifier","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!=","named":false},{"type":"!==","named":false},{"type":"%","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"/","named":false},{"type":"<","named":false},{"type":"<<","named":false},{"type":"<=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>>","named":false},{"type":"??","named":false},{"type":"^","named":false},{"type":"in","named":false},{"type":"instanceof","named":false},{"type":"|","named":false},{"type":"||","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"break_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"call_expression","named":true,"fields":{"arguments":{"multiple":false,"required":true,"types":[{"type":"arguments","named":true},{"type":"template_string","named":true}]},"function":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"call_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"catch_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}}},{"type":"class","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_body","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"abstract_method_signature","named":true},{"type":"class_static_block","named":true},{"type":"index_signature","named":true},{"type":"method_definition","named":true},{"type":"method_signature","named":true},{"type":"public_field_definition","named":true}]}},{"type":"class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_heritage","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"extends_clause","named":true},{"type":"implements_clause","named":true}]}},{"type":"class_static_block","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"computed_property_name","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"conditional_type","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"left":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"constraint","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"construct_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"constructor_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"continue_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"debugger_statement","named":true,"fields":{}},{"type":"decorator","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"parenthesized_expression","named":true}]}},{"type":"default_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"do_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"else_clause","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}},{"type":"empty_statement","named":true,"fields":{}},{"type":"enum_assignment","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"enum_body","named":true,"fields":{"name":{"multiple":true,"required":false,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"enum_assignment","named":true}]}},{"type":"enum_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"enum_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}}},{"type":"existential_type","named":true,"fields":{}},{"type":"export_clause","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"export_specifier","named":true}]}},{"type":"export_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"export_statement","named":true,"fields":{"declaration":{"multiple":false,"required":false,"types":[{"type":"declaration","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"export_clause","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"namespace_export","named":true}]}},{"type":"expression_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"extends_clause","named":true,"fields":{"type_arguments":{"multiple":true,"required":false,"types":[{"type":"type_arguments","named":true}]},"value":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"extends_type_clause","named":true,"fields":{"type":{"multiple":true,"required":true,"types":[{"type":"generic_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]}}},{"type":"finally_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"flow_maybe_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"for_in_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"kind":{"multiple":false,"required":false,"types":[{"type":"const","named":false},{"type":"let","named":false},{"type":"var","named":false}]},"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"in","named":false},{"type":"of","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"for_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":true,"required":true,"types":[{"type":";","named":false},{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"increment":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"initializer":{"multiple":false,"required":true,"types":[{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"lexical_declaration","named":true},{"type":"sequence_expression","named":true},{"type":"variable_declaration","named":true}]}}},{"type":"formal_parameters","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"required_parameter","named":true}]}},{"type":"function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_expression","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true},{"type":"type","named":true},{"type":"type_predicate","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generic_type","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}}},{"type":"identifier","named":true,"fields":{}},{"type":"if_statement","named":true,"fields":{"alternative":{"multiple":false,"required":false,"types":[{"type":"else_clause","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}}},{"type":"implements_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"import","named":true,"fields":{}},{"type":"import_alias","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]}},{"type":"import_attribute","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"object","named":true}]}},{"type":"import_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"named_imports","named":true},{"type":"namespace_import","named":true}]}},{"type":"import_require_clause","named":true,"fields":{"source":{"multiple":false,"required":true,"types":[{"type":"string","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"import_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"import_statement","named":true,"fields":{"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"import_attribute","named":true},{"type":"import_clause","named":true},{"type":"import_require_clause","named":true}]}},{"type":"index_signature","named":true,"fields":{"index_type":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"sign":{"multiple":false,"required":false,"types":[{"type":"+","named":false},{"type":"-","named":false}]},"type":{"multiple":false,"required":true,"types":[{"type":"adding_type_annotation","named":true},{"type":"omitting_type_annotation","named":true},{"type":"opting_type_annotation","named":true},{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"mapped_type_clause","named":true}]}},{"type":"index_type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"infer_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true},{"type":"type_identifier","named":true}]}},{"type":"instantiation_expression","named":true,"fields":{"function":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"import","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"interface_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"interface_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"interface_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"extends_type_clause","named":true}]}},{"type":"internal_module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"intersection_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"jsx_attribute","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"jsx_element","named":true},{"type":"jsx_expression","named":true},{"type":"jsx_namespace_name","named":true},{"type":"jsx_self_closing_element","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]}},{"type":"jsx_closing_element","named":true,"fields":{"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"jsx_namespace_name","named":true},{"type":"member_expression","named":true}]}}},{"type":"jsx_element","named":true,"fields":{"close_tag":{"multiple":false,"required":true,"types":[{"type":"jsx_closing_element","named":true}]},"open_tag":{"multiple":false,"required":true,"types":[{"type":"jsx_opening_element","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"html_character_reference","named":true},{"type":"jsx_element","named":true},{"type":"jsx_expression","named":true},{"type":"jsx_self_closing_element","named":true},{"type":"jsx_text","named":true}]}},{"type":"jsx_expression","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true},{"type":"spread_element","named":true}]}},{"type":"jsx_namespace_name","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"jsx_opening_element","named":true,"fields":{"attribute":{"multiple":true,"required":false,"types":[{"type":"jsx_attribute","named":true},{"type":"jsx_expression","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"jsx_namespace_name","named":true},{"type":"member_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"jsx_self_closing_element","named":true,"fields":{"attribute":{"multiple":true,"required":false,"types":[{"type":"jsx_attribute","named":true},{"type":"jsx_expression","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"jsx_namespace_name","named":true},{"type":"member_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"labeled_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"label":{"multiple":false,"required":true,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"lexical_declaration","named":true,"fields":{"kind":{"multiple":false,"required":true,"types":[{"type":"const","named":false},{"type":"let","named":false}]}},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"literal_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"false","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"string","named":true},{"type":"true","named":true},{"type":"unary_expression","named":true},{"type":"undefined","named":true}]}},{"type":"lookup_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"mapped_type_clause","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"member_expression","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true}]}}},{"type":"meta_property","named":true,"fields":{}},{"type":"method_definition","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"named_imports","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"import_specifier","named":true}]}},{"type":"namespace_export","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}},{"type":"namespace_import","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"nested_identifier","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"property_identifier","named":true}]}}},{"type":"nested_type_identifier","named":true,"fields":{"module":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]}}},{"type":"new_expression","named":true,"fields":{"arguments":{"multiple":false,"required":false,"types":[{"type":"arguments","named":true}]},"constructor":{"multiple":false,"required":true,"types":[{"type":"primary_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"non_null_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"object","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"method_definition","named":true},{"type":"pair","named":true},{"type":"shorthand_property_identifier","named":true},{"type":"spread_element","named":true}]}},{"type":"object_assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"object_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"object_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"object_assignment_pattern","named":true},{"type":"pair_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]}},{"type":"object_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"omitting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"opting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"optional_chain","named":true,"fields":{}},{"type":"optional_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"optional_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"override_modifier","named":true,"fields":{}},{"type":"pair","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"pair_pattern","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}}},{"type":"parenthesized_expression","named":true,"fields":{"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"parenthesized_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"predefined_type","named":true,"fields":{}},{"type":"program","named":true,"root":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"hash_bang_line","named":true},{"type":"statement","named":true}]}},{"type":"property_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"public_field_definition","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"readonly_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"regex","named":true,"fields":{"flags":{"multiple":false,"required":false,"types":[{"type":"regex_flags","named":true}]},"pattern":{"multiple":false,"required":true,"types":[{"type":"regex_pattern","named":true}]}}},{"type":"required_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"rest_pattern","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"rest_pattern","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]}},{"type":"rest_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"return_statement","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"satisfies_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"sequence_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"spread_element","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"statement_block","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}},{"type":"string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"html_character_reference","named":true},{"type":"string_fragment","named":true}]}},{"type":"subscript_expression","named":true,"fields":{"index":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true},{"type":"predefined_type","named":true},{"type":"sequence_expression","named":true},{"type":"string","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]}}},{"type":"switch_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"switch_case","named":true},{"type":"switch_default","named":true}]}},{"type":"switch_case","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}}},{"type":"switch_default","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}}},{"type":"switch_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"switch_body","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"template_literal_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"string_fragment","named":true},{"type":"template_type","named":true}]}},{"type":"template_string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"string_fragment","named":true},{"type":"template_substitution","named":true}]}},{"type":"template_substitution","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"template_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"infer_type","named":true},{"type":"primary_type","named":true}]}},{"type":"ternary_expression","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"throw_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"try_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"finalizer":{"multiple":false,"required":false,"types":[{"type":"finally_clause","named":true}]},"handler":{"multiple":false,"required":false,"types":[{"type":"catch_clause","named":true}]}}},{"type":"tuple_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"optional_type","named":true},{"type":"required_parameter","named":true},{"type":"rest_type","named":true},{"type":"type","named":true}]}},{"type":"type_alias_declaration","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_arguments","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_parameter","named":true,"fields":{"constraint":{"multiple":false,"required":false,"types":[{"type":"constraint","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"default_type","named":true}]}}},{"type":"type_parameters","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type_parameter","named":true}]}},{"type":"type_predicate","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_predicate_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type_predicate","named":true}]}},{"type":"type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"instantiation_expression","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true},{"type":"this","named":true}]}},{"type":"unary_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"delete","named":false},{"type":"typeof","named":false},{"type":"void","named":false},{"type":"~","named":false}]}}},{"type":"union_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"update_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"++","named":false},{"type":"--","named":false}]}}},{"type":"variable_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"variable_declarator","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"while_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"with_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"yield_expression","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"!","named":false},{"type":"!=","named":false},{"type":"!==","named":false},{"type":"\\"","named":false},{"type":"${","named":false},{"type":"%","named":false},{"type":"%=","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"\'","named":false},{"type":"(","named":false},{"type":")","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+","named":false},{"type":"++","named":false},{"type":"+=","named":false},{"type":"+?:","named":false},{"type":",","named":false},{"type":"-","named":false},{"type":"--","named":false},{"type":"-=","named":false},{"type":"-?:","named":false},{"type":".","named":false},{"type":"...","named":false},{"type":"/","named":false},{"type":"/=","named":false},{"type":"/>","named":false},{"type":":","named":false},{"type":";","named":false},{"type":"<","named":false},{"type":"</","named":false},{"type":"<<","named":false},{"type":"<<=","named":false},{"type":"<=","named":false},{"type":"=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":"=>","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>=","named":false},{"type":">>>","named":false},{"type":">>>=","named":false},{"type":"?","named":false},{"type":"?.","named":false},{"type":"?:","named":false},{"type":"??","named":false},{"type":"??=","named":false},{"type":"@","named":false},{"type":"[","named":false},{"type":"]","named":false},{"type":"^","named":false},{"type":"^=","named":false},{"type":"`","named":false},{"type":"abstract","named":false},{"type":"accessor","named":false},{"type":"any","named":false},{"type":"as","named":false},{"type":"assert","named":false},{"type":"asserts","named":false},{"type":"async","named":false},{"type":"await","named":false},{"type":"boolean","named":false},{"type":"break","named":false},{"type":"case","named":false},{"type":"catch","named":false},{"type":"class","named":false},{"type":"comment","named":true},{"type":"const","named":false},{"type":"continue","named":false},{"type":"debugger","named":false},{"type":"declare","named":false},{"type":"default","named":false},{"type":"delete","named":false},{"type":"do","named":false},{"type":"else","named":false},{"type":"enum","named":false},{"type":"escape_sequence","named":true},{"type":"export","named":false},{"type":"extends","named":false},{"type":"false","named":true},{"type":"finally","named":false},{"type":"for","named":false},{"type":"from","named":false},{"type":"function","named":false},{"type":"get","named":false},{"type":"global","named":false},{"type":"hash_bang_line","named":true},{"type":"html_character_reference","named":true},{"type":"html_comment","named":true},{"type":"if","named":false},{"type":"implements","named":false},{"type":"import","named":false},{"type":"in","named":false},{"type":"infer","named":false},{"type":"instanceof","named":false},{"type":"interface","named":false},{"type":"is","named":false},{"type":"jsx_text","named":true},{"type":"keyof","named":false},{"type":"let","named":false},{"type":"meta","named":false},{"type":"module","named":false},{"type":"namespace","named":false},{"type":"never","named":false},{"type":"new","named":false},{"type":"null","named":true},{"type":"number","named":true},{"type":"number","named":false},{"type":"object","named":false},{"type":"of","named":false},{"type":"override","named":false},{"type":"private","named":false},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"protected","named":false},{"type":"public","named":false},{"type":"readonly","named":false},{"type":"regex_flags","named":true},{"type":"regex_pattern","named":true},{"type":"require","named":false},{"type":"return","named":false},{"type":"satisfies","named":false},{"type":"set","named":false},{"type":"shorthand_property_identifier","named":true},{"type":"shorthand_property_identifier_pattern","named":true},{"type":"statement_identifier","named":true},{"type":"static","named":false},{"type":"string","named":false},{"type":"string_fragment","named":true},{"type":"super","named":true},{"type":"switch","named":false},{"type":"symbol","named":false},{"type":"target","named":false},{"type":"this","named":true},{"type":"this_type","named":true},{"type":"throw","named":false},{"type":"true","named":true},{"type":"try","named":false},{"type":"type","named":false},{"type":"type_identifier","named":true},{"type":"typeof","named":false},{"type":"undefined","named":true},{"type":"unique symbol","named":false},{"type":"unknown","named":false},{"type":"using","named":false},{"type":"var","named":false},{"type":"void","named":false},{"type":"while","named":false},{"type":"with","named":false},{"type":"yield","named":false},{"type":"{","named":false},{"type":"{|","named":false},{"type":"|","named":false},{"type":"|=","named":false},{"type":"||","named":false},{"type":"||=","named":false},{"type":"|}","named":false},{"type":"}","named":false},{"type":"~","named":false}]');
1857
- var ye;
1858
- function Et() {
1859
- return ye || (ye = 1, (function(s) {
1860
- const e = _e.join(__dirname, "..", "..");
1861
- s.exports = typeof process.versions.bun == "string" ? Y(`../../prebuilds/${process.platform}-${process.arch}/tree-sitter-typescript.node`) : St()(e);
159
+ const ae = /* @__PURE__ */ JSON.parse('[{"type":"declaration","named":true,"subtypes":[{"type":"abstract_class_declaration","named":true},{"type":"ambient_declaration","named":true},{"type":"class_declaration","named":true},{"type":"enum_declaration","named":true},{"type":"function_declaration","named":true},{"type":"function_signature","named":true},{"type":"generator_function_declaration","named":true},{"type":"import_alias","named":true},{"type":"interface_declaration","named":true},{"type":"internal_module","named":true},{"type":"lexical_declaration","named":true},{"type":"module","named":true},{"type":"type_alias_declaration","named":true},{"type":"variable_declaration","named":true}]},{"type":"expression","named":true,"subtypes":[{"type":"as_expression","named":true},{"type":"assignment_expression","named":true},{"type":"augmented_assignment_expression","named":true},{"type":"await_expression","named":true},{"type":"binary_expression","named":true},{"type":"instantiation_expression","named":true},{"type":"internal_module","named":true},{"type":"new_expression","named":true},{"type":"primary_expression","named":true},{"type":"satisfies_expression","named":true},{"type":"ternary_expression","named":true},{"type":"type_assertion","named":true},{"type":"unary_expression","named":true},{"type":"update_expression","named":true},{"type":"yield_expression","named":true}]},{"type":"pattern","named":true,"subtypes":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},{"type":"primary_expression","named":true,"subtypes":[{"type":"array","named":true},{"type":"arrow_function","named":true},{"type":"call_expression","named":true},{"type":"class","named":true},{"type":"false","named":true},{"type":"function_expression","named":true},{"type":"generator_function","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"meta_property","named":true},{"type":"non_null_expression","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"object","named":true},{"type":"parenthesized_expression","named":true},{"type":"regex","named":true},{"type":"string","named":true},{"type":"subscript_expression","named":true},{"type":"super","named":true},{"type":"template_string","named":true},{"type":"this","named":true},{"type":"true","named":true},{"type":"undefined","named":true}]},{"type":"primary_type","named":true,"subtypes":[{"type":"array_type","named":true},{"type":"conditional_type","named":true},{"type":"const","named":false},{"type":"existential_type","named":true},{"type":"flow_maybe_type","named":true},{"type":"generic_type","named":true},{"type":"index_type_query","named":true},{"type":"intersection_type","named":true},{"type":"literal_type","named":true},{"type":"lookup_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"object_type","named":true},{"type":"parenthesized_type","named":true},{"type":"predefined_type","named":true},{"type":"template_literal_type","named":true},{"type":"this_type","named":true},{"type":"tuple_type","named":true},{"type":"type_identifier","named":true},{"type":"type_query","named":true},{"type":"union_type","named":true}]},{"type":"statement","named":true,"subtypes":[{"type":"break_statement","named":true},{"type":"continue_statement","named":true},{"type":"debugger_statement","named":true},{"type":"declaration","named":true},{"type":"do_statement","named":true},{"type":"empty_statement","named":true},{"type":"export_statement","named":true},{"type":"expression_statement","named":true},{"type":"for_in_statement","named":true},{"type":"for_statement","named":true},{"type":"if_statement","named":true},{"type":"import_statement","named":true},{"type":"labeled_statement","named":true},{"type":"return_statement","named":true},{"type":"statement_block","named":true},{"type":"switch_statement","named":true},{"type":"throw_statement","named":true},{"type":"try_statement","named":true},{"type":"while_statement","named":true},{"type":"with_statement","named":true}]},{"type":"type","named":true,"subtypes":[{"type":"call_expression","named":true},{"type":"constructor_type","named":true},{"type":"function_type","named":true},{"type":"infer_type","named":true},{"type":"member_expression","named":true},{"type":"primary_type","named":true},{"type":"readonly_type","named":true}]},{"type":"abstract_class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"abstract_method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"accessibility_modifier","named":true,"fields":{}},{"type":"adding_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"ambient_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"declaration","named":true},{"type":"property_identifier","named":true},{"type":"statement_block","named":true},{"type":"type","named":true}]}},{"type":"arguments","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}},{"type":"array_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"arrow_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":false,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"as_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"asserts","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true},{"type":"type_predicate","named":true}]}},{"type":"asserts_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true}]}},{"type":"assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"augmented_assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"%=","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+=","named":false},{"type":"-=","named":false},{"type":"/=","named":false},{"type":"<<=","named":false},{"type":">>=","named":false},{"type":">>>=","named":false},{"type":"??=","named":false},{"type":"^=","named":false},{"type":"|=","named":false},{"type":"||=","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"await_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"binary_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"private_property_identifier","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!=","named":false},{"type":"!==","named":false},{"type":"%","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"/","named":false},{"type":"<","named":false},{"type":"<<","named":false},{"type":"<=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>>","named":false},{"type":"??","named":false},{"type":"^","named":false},{"type":"in","named":false},{"type":"instanceof","named":false},{"type":"|","named":false},{"type":"||","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"break_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"call_expression","named":true,"fields":{"arguments":{"multiple":false,"required":true,"types":[{"type":"arguments","named":true},{"type":"template_string","named":true}]},"function":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"call_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"catch_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}}},{"type":"class","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_body","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"abstract_method_signature","named":true},{"type":"class_static_block","named":true},{"type":"index_signature","named":true},{"type":"method_definition","named":true},{"type":"method_signature","named":true},{"type":"public_field_definition","named":true}]}},{"type":"class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_heritage","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"extends_clause","named":true},{"type":"implements_clause","named":true}]}},{"type":"class_static_block","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"computed_property_name","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"conditional_type","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"left":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"constraint","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"construct_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"constructor_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"continue_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"debugger_statement","named":true,"fields":{}},{"type":"decorator","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"parenthesized_expression","named":true}]}},{"type":"default_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"do_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"else_clause","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}},{"type":"empty_statement","named":true,"fields":{}},{"type":"enum_assignment","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"enum_body","named":true,"fields":{"name":{"multiple":true,"required":false,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"enum_assignment","named":true}]}},{"type":"enum_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"enum_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}}},{"type":"existential_type","named":true,"fields":{}},{"type":"export_clause","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"export_specifier","named":true}]}},{"type":"export_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"export_statement","named":true,"fields":{"declaration":{"multiple":false,"required":false,"types":[{"type":"declaration","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"export_clause","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"namespace_export","named":true}]}},{"type":"expression_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"extends_clause","named":true,"fields":{"type_arguments":{"multiple":true,"required":false,"types":[{"type":"type_arguments","named":true}]},"value":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"extends_type_clause","named":true,"fields":{"type":{"multiple":true,"required":true,"types":[{"type":"generic_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]}}},{"type":"finally_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"flow_maybe_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"for_in_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"kind":{"multiple":false,"required":false,"types":[{"type":"const","named":false},{"type":"let","named":false},{"type":"var","named":false}]},"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"in","named":false},{"type":"of","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"for_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":true,"required":true,"types":[{"type":";","named":false},{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"increment":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"initializer":{"multiple":false,"required":true,"types":[{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"lexical_declaration","named":true},{"type":"sequence_expression","named":true},{"type":"variable_declaration","named":true}]}}},{"type":"formal_parameters","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"required_parameter","named":true}]}},{"type":"function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_expression","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true},{"type":"type","named":true},{"type":"type_predicate","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generic_type","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}}},{"type":"identifier","named":true,"fields":{}},{"type":"if_statement","named":true,"fields":{"alternative":{"multiple":false,"required":false,"types":[{"type":"else_clause","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}}},{"type":"implements_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"import","named":true,"fields":{}},{"type":"import_alias","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]}},{"type":"import_attribute","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"object","named":true}]}},{"type":"import_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"named_imports","named":true},{"type":"namespace_import","named":true}]}},{"type":"import_require_clause","named":true,"fields":{"source":{"multiple":false,"required":true,"types":[{"type":"string","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"import_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"import_statement","named":true,"fields":{"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"import_attribute","named":true},{"type":"import_clause","named":true},{"type":"import_require_clause","named":true}]}},{"type":"index_signature","named":true,"fields":{"index_type":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"sign":{"multiple":false,"required":false,"types":[{"type":"+","named":false},{"type":"-","named":false}]},"type":{"multiple":false,"required":true,"types":[{"type":"adding_type_annotation","named":true},{"type":"omitting_type_annotation","named":true},{"type":"opting_type_annotation","named":true},{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"mapped_type_clause","named":true}]}},{"type":"index_type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"infer_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true},{"type":"type_identifier","named":true}]}},{"type":"instantiation_expression","named":true,"fields":{"function":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"import","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"interface_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"interface_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"interface_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"extends_type_clause","named":true}]}},{"type":"internal_module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"intersection_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"labeled_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"label":{"multiple":false,"required":true,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"lexical_declaration","named":true,"fields":{"kind":{"multiple":false,"required":true,"types":[{"type":"const","named":false},{"type":"let","named":false}]}},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"literal_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"false","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"string","named":true},{"type":"true","named":true},{"type":"unary_expression","named":true},{"type":"undefined","named":true}]}},{"type":"lookup_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"mapped_type_clause","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"member_expression","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true}]}}},{"type":"meta_property","named":true,"fields":{}},{"type":"method_definition","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"named_imports","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"import_specifier","named":true}]}},{"type":"namespace_export","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}},{"type":"namespace_import","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"nested_identifier","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"property_identifier","named":true}]}}},{"type":"nested_type_identifier","named":true,"fields":{"module":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]}}},{"type":"new_expression","named":true,"fields":{"arguments":{"multiple":false,"required":false,"types":[{"type":"arguments","named":true}]},"constructor":{"multiple":false,"required":true,"types":[{"type":"primary_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"non_null_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"object","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"method_definition","named":true},{"type":"pair","named":true},{"type":"shorthand_property_identifier","named":true},{"type":"spread_element","named":true}]}},{"type":"object_assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"object_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"object_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"object_assignment_pattern","named":true},{"type":"pair_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]}},{"type":"object_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"omitting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"opting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"optional_chain","named":true,"fields":{}},{"type":"optional_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"optional_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"override_modifier","named":true,"fields":{}},{"type":"pair","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"pair_pattern","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}}},{"type":"parenthesized_expression","named":true,"fields":{"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"parenthesized_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"predefined_type","named":true,"fields":{}},{"type":"program","named":true,"root":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"hash_bang_line","named":true},{"type":"statement","named":true}]}},{"type":"property_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"public_field_definition","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"readonly_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"regex","named":true,"fields":{"flags":{"multiple":false,"required":false,"types":[{"type":"regex_flags","named":true}]},"pattern":{"multiple":false,"required":true,"types":[{"type":"regex_pattern","named":true}]}}},{"type":"required_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"rest_pattern","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"rest_pattern","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]}},{"type":"rest_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"return_statement","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"satisfies_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"sequence_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"spread_element","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"statement_block","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}},{"type":"string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"string_fragment","named":true}]}},{"type":"subscript_expression","named":true,"fields":{"index":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true},{"type":"predefined_type","named":true},{"type":"sequence_expression","named":true},{"type":"string","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]}}},{"type":"switch_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"switch_case","named":true},{"type":"switch_default","named":true}]}},{"type":"switch_case","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}}},{"type":"switch_default","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}}},{"type":"switch_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"switch_body","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"template_literal_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"string_fragment","named":true},{"type":"template_type","named":true}]}},{"type":"template_string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"string_fragment","named":true},{"type":"template_substitution","named":true}]}},{"type":"template_substitution","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"template_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"infer_type","named":true},{"type":"primary_type","named":true}]}},{"type":"ternary_expression","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"throw_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"try_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"finalizer":{"multiple":false,"required":false,"types":[{"type":"finally_clause","named":true}]},"handler":{"multiple":false,"required":false,"types":[{"type":"catch_clause","named":true}]}}},{"type":"tuple_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"optional_type","named":true},{"type":"required_parameter","named":true},{"type":"rest_type","named":true},{"type":"type","named":true}]}},{"type":"type_alias_declaration","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_arguments","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_assertion","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type_arguments","named":true}]}},{"type":"type_parameter","named":true,"fields":{"constraint":{"multiple":false,"required":false,"types":[{"type":"constraint","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"default_type","named":true}]}}},{"type":"type_parameters","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type_parameter","named":true}]}},{"type":"type_predicate","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_predicate_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type_predicate","named":true}]}},{"type":"type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"instantiation_expression","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true},{"type":"this","named":true}]}},{"type":"unary_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"delete","named":false},{"type":"typeof","named":false},{"type":"void","named":false},{"type":"~","named":false}]}}},{"type":"union_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"update_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"++","named":false},{"type":"--","named":false}]}}},{"type":"variable_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"variable_declarator","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"while_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"with_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"yield_expression","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"!","named":false},{"type":"!=","named":false},{"type":"!==","named":false},{"type":"\\"","named":false},{"type":"${","named":false},{"type":"%","named":false},{"type":"%=","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"\'","named":false},{"type":"(","named":false},{"type":")","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+","named":false},{"type":"++","named":false},{"type":"+=","named":false},{"type":"+?:","named":false},{"type":",","named":false},{"type":"-","named":false},{"type":"--","named":false},{"type":"-=","named":false},{"type":"-?:","named":false},{"type":".","named":false},{"type":"...","named":false},{"type":"/","named":false},{"type":"/=","named":false},{"type":":","named":false},{"type":";","named":false},{"type":"<","named":false},{"type":"<<","named":false},{"type":"<<=","named":false},{"type":"<=","named":false},{"type":"=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":"=>","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>=","named":false},{"type":">>>","named":false},{"type":">>>=","named":false},{"type":"?","named":false},{"type":"?.","named":false},{"type":"?:","named":false},{"type":"??","named":false},{"type":"??=","named":false},{"type":"@","named":false},{"type":"[","named":false},{"type":"]","named":false},{"type":"^","named":false},{"type":"^=","named":false},{"type":"`","named":false},{"type":"abstract","named":false},{"type":"accessor","named":false},{"type":"any","named":false},{"type":"as","named":false},{"type":"assert","named":false},{"type":"asserts","named":false},{"type":"async","named":false},{"type":"await","named":false},{"type":"boolean","named":false},{"type":"break","named":false},{"type":"case","named":false},{"type":"catch","named":false},{"type":"class","named":false},{"type":"comment","named":true},{"type":"const","named":false},{"type":"continue","named":false},{"type":"debugger","named":false},{"type":"declare","named":false},{"type":"default","named":false},{"type":"delete","named":false},{"type":"do","named":false},{"type":"else","named":false},{"type":"enum","named":false},{"type":"escape_sequence","named":true},{"type":"export","named":false},{"type":"extends","named":false},{"type":"false","named":true},{"type":"finally","named":false},{"type":"for","named":false},{"type":"from","named":false},{"type":"function","named":false},{"type":"get","named":false},{"type":"global","named":false},{"type":"hash_bang_line","named":true},{"type":"html_comment","named":true},{"type":"if","named":false},{"type":"implements","named":false},{"type":"import","named":false},{"type":"in","named":false},{"type":"infer","named":false},{"type":"instanceof","named":false},{"type":"interface","named":false},{"type":"is","named":false},{"type":"keyof","named":false},{"type":"let","named":false},{"type":"meta","named":false},{"type":"module","named":false},{"type":"namespace","named":false},{"type":"never","named":false},{"type":"new","named":false},{"type":"null","named":true},{"type":"number","named":true},{"type":"number","named":false},{"type":"object","named":false},{"type":"of","named":false},{"type":"override","named":false},{"type":"private","named":false},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"protected","named":false},{"type":"public","named":false},{"type":"readonly","named":false},{"type":"regex_flags","named":true},{"type":"regex_pattern","named":true},{"type":"require","named":false},{"type":"return","named":false},{"type":"satisfies","named":false},{"type":"set","named":false},{"type":"shorthand_property_identifier","named":true},{"type":"shorthand_property_identifier_pattern","named":true},{"type":"statement_identifier","named":true},{"type":"static","named":false},{"type":"string","named":false},{"type":"string_fragment","named":true},{"type":"super","named":true},{"type":"switch","named":false},{"type":"symbol","named":false},{"type":"target","named":false},{"type":"this","named":true},{"type":"this_type","named":true},{"type":"throw","named":false},{"type":"true","named":true},{"type":"try","named":false},{"type":"type","named":false},{"type":"type_identifier","named":true},{"type":"typeof","named":false},{"type":"undefined","named":true},{"type":"unique symbol","named":false},{"type":"unknown","named":false},{"type":"using","named":false},{"type":"var","named":false},{"type":"void","named":false},{"type":"while","named":false},{"type":"with","named":false},{"type":"yield","named":false},{"type":"{","named":false},{"type":"{|","named":false},{"type":"|","named":false},{"type":"|=","named":false},{"type":"||","named":false},{"type":"||=","named":false},{"type":"|}","named":false},{"type":"}","named":false},{"type":"~","named":false}]'), pe = /* @__PURE__ */ JSON.parse('[{"type":"declaration","named":true,"subtypes":[{"type":"abstract_class_declaration","named":true},{"type":"ambient_declaration","named":true},{"type":"class_declaration","named":true},{"type":"enum_declaration","named":true},{"type":"function_declaration","named":true},{"type":"function_signature","named":true},{"type":"generator_function_declaration","named":true},{"type":"import_alias","named":true},{"type":"interface_declaration","named":true},{"type":"internal_module","named":true},{"type":"lexical_declaration","named":true},{"type":"module","named":true},{"type":"type_alias_declaration","named":true},{"type":"variable_declaration","named":true}]},{"type":"expression","named":true,"subtypes":[{"type":"as_expression","named":true},{"type":"assignment_expression","named":true},{"type":"augmented_assignment_expression","named":true},{"type":"await_expression","named":true},{"type":"binary_expression","named":true},{"type":"instantiation_expression","named":true},{"type":"internal_module","named":true},{"type":"jsx_element","named":true},{"type":"jsx_self_closing_element","named":true},{"type":"new_expression","named":true},{"type":"primary_expression","named":true},{"type":"satisfies_expression","named":true},{"type":"ternary_expression","named":true},{"type":"unary_expression","named":true},{"type":"update_expression","named":true},{"type":"yield_expression","named":true}]},{"type":"pattern","named":true,"subtypes":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},{"type":"primary_expression","named":true,"subtypes":[{"type":"array","named":true},{"type":"arrow_function","named":true},{"type":"call_expression","named":true},{"type":"class","named":true},{"type":"false","named":true},{"type":"function_expression","named":true},{"type":"generator_function","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"meta_property","named":true},{"type":"non_null_expression","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"object","named":true},{"type":"parenthesized_expression","named":true},{"type":"regex","named":true},{"type":"string","named":true},{"type":"subscript_expression","named":true},{"type":"super","named":true},{"type":"template_string","named":true},{"type":"this","named":true},{"type":"true","named":true},{"type":"undefined","named":true}]},{"type":"primary_type","named":true,"subtypes":[{"type":"array_type","named":true},{"type":"conditional_type","named":true},{"type":"const","named":false},{"type":"existential_type","named":true},{"type":"flow_maybe_type","named":true},{"type":"generic_type","named":true},{"type":"index_type_query","named":true},{"type":"intersection_type","named":true},{"type":"literal_type","named":true},{"type":"lookup_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"object_type","named":true},{"type":"parenthesized_type","named":true},{"type":"predefined_type","named":true},{"type":"template_literal_type","named":true},{"type":"this_type","named":true},{"type":"tuple_type","named":true},{"type":"type_identifier","named":true},{"type":"type_query","named":true},{"type":"union_type","named":true}]},{"type":"statement","named":true,"subtypes":[{"type":"break_statement","named":true},{"type":"continue_statement","named":true},{"type":"debugger_statement","named":true},{"type":"declaration","named":true},{"type":"do_statement","named":true},{"type":"empty_statement","named":true},{"type":"export_statement","named":true},{"type":"expression_statement","named":true},{"type":"for_in_statement","named":true},{"type":"for_statement","named":true},{"type":"if_statement","named":true},{"type":"import_statement","named":true},{"type":"labeled_statement","named":true},{"type":"return_statement","named":true},{"type":"statement_block","named":true},{"type":"switch_statement","named":true},{"type":"throw_statement","named":true},{"type":"try_statement","named":true},{"type":"while_statement","named":true},{"type":"with_statement","named":true}]},{"type":"type","named":true,"subtypes":[{"type":"call_expression","named":true},{"type":"constructor_type","named":true},{"type":"function_type","named":true},{"type":"infer_type","named":true},{"type":"member_expression","named":true},{"type":"primary_type","named":true},{"type":"readonly_type","named":true}]},{"type":"abstract_class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"abstract_method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"accessibility_modifier","named":true,"fields":{}},{"type":"adding_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"ambient_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"declaration","named":true},{"type":"property_identifier","named":true},{"type":"statement_block","named":true},{"type":"type","named":true}]}},{"type":"arguments","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"expression","named":true},{"type":"spread_element","named":true}]}},{"type":"array_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}},{"type":"array_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"arrow_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":false,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"as_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"asserts","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true},{"type":"type_predicate","named":true}]}},{"type":"asserts_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true}]}},{"type":"assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"augmented_assignment_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"%=","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+=","named":false},{"type":"-=","named":false},{"type":"/=","named":false},{"type":"<<=","named":false},{"type":">>=","named":false},{"type":">>>=","named":false},{"type":"??=","named":false},{"type":"^=","named":false},{"type":"|=","named":false},{"type":"||=","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"await_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"binary_expression","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"private_property_identifier","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!=","named":false},{"type":"!==","named":false},{"type":"%","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"/","named":false},{"type":"<","named":false},{"type":"<<","named":false},{"type":"<=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>>","named":false},{"type":"??","named":false},{"type":"^","named":false},{"type":"in","named":false},{"type":"instanceof","named":false},{"type":"|","named":false},{"type":"||","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"break_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"call_expression","named":true,"fields":{"arguments":{"multiple":false,"required":true,"types":[{"type":"arguments","named":true},{"type":"template_string","named":true}]},"function":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"call_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"catch_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"parameter":{"multiple":false,"required":false,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}}},{"type":"class","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_body","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"abstract_method_signature","named":true},{"type":"class_static_block","named":true},{"type":"index_signature","named":true},{"type":"method_definition","named":true},{"type":"method_signature","named":true},{"type":"public_field_definition","named":true}]}},{"type":"class_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"class_body","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"class_heritage","named":true}]}},{"type":"class_heritage","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"extends_clause","named":true},{"type":"implements_clause","named":true}]}},{"type":"class_static_block","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"computed_property_name","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"conditional_type","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"left":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"constraint","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"construct_signature","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"constructor_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"continue_statement","named":true,"fields":{"label":{"multiple":false,"required":false,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"debugger_statement","named":true,"fields":{}},{"type":"decorator","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"parenthesized_expression","named":true}]}},{"type":"default_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"do_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"else_clause","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}},{"type":"empty_statement","named":true,"fields":{}},{"type":"enum_assignment","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"enum_body","named":true,"fields":{"name":{"multiple":true,"required":false,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"enum_assignment","named":true}]}},{"type":"enum_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"enum_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}}},{"type":"existential_type","named":true,"fields":{}},{"type":"export_clause","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"export_specifier","named":true}]}},{"type":"export_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"export_statement","named":true,"fields":{"declaration":{"multiple":false,"required":false,"types":[{"type":"declaration","named":true}]},"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"export_clause","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"namespace_export","named":true}]}},{"type":"expression_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"extends_clause","named":true,"fields":{"type_arguments":{"multiple":true,"required":false,"types":[{"type":"type_arguments","named":true}]},"value":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"extends_type_clause","named":true,"fields":{"type":{"multiple":true,"required":true,"types":[{"type":"generic_type","named":true},{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]}}},{"type":"finally_clause","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]}}},{"type":"flow_maybe_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"for_in_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"kind":{"multiple":false,"required":false,"types":[{"type":"const","named":false},{"type":"let","named":false},{"type":"var","named":false}]},"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"parenthesized_expression","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"in","named":false},{"type":"of","named":false}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"for_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":true,"required":true,"types":[{"type":";","named":false},{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"increment":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]},"initializer":{"multiple":false,"required":true,"types":[{"type":"empty_statement","named":true},{"type":"expression","named":true},{"type":"lexical_declaration","named":true},{"type":"sequence_expression","named":true},{"type":"variable_declaration","named":true}]}}},{"type":"formal_parameters","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"required_parameter","named":true}]}},{"type":"function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_expression","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"function_type","named":true,"fields":{"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":true,"types":[{"type":"asserts","named":true},{"type":"type","named":true},{"type":"type_predicate","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generator_function_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}}},{"type":"generic_type","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"nested_type_identifier","named":true},{"type":"type_identifier","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}}},{"type":"identifier","named":true,"fields":{}},{"type":"if_statement","named":true,"fields":{"alternative":{"multiple":false,"required":false,"types":[{"type":"else_clause","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]}}},{"type":"implements_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"import","named":true,"fields":{}},{"type":"import_alias","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]}},{"type":"import_attribute","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"object","named":true}]}},{"type":"import_clause","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true},{"type":"named_imports","named":true},{"type":"namespace_import","named":true}]}},{"type":"import_require_clause","named":true,"fields":{"source":{"multiple":false,"required":true,"types":[{"type":"string","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"import_specifier","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}}},{"type":"import_statement","named":true,"fields":{"source":{"multiple":false,"required":false,"types":[{"type":"string","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"import_attribute","named":true},{"type":"import_clause","named":true},{"type":"import_require_clause","named":true}]}},{"type":"index_signature","named":true,"fields":{"index_type":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"sign":{"multiple":false,"required":false,"types":[{"type":"+","named":false},{"type":"-","named":false}]},"type":{"multiple":false,"required":true,"types":[{"type":"adding_type_annotation","named":true},{"type":"omitting_type_annotation","named":true},{"type":"opting_type_annotation","named":true},{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"mapped_type_clause","named":true}]}},{"type":"index_type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"primary_type","named":true}]}},{"type":"infer_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true},{"type":"type_identifier","named":true}]}},{"type":"instantiation_expression","named":true,"fields":{"function":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"import","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true}]},"type_arguments":{"multiple":false,"required":true,"types":[{"type":"type_arguments","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"interface_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"interface_declaration","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"interface_body","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":false,"required":false,"types":[{"type":"extends_type_clause","named":true}]}},{"type":"internal_module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"intersection_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"jsx_attribute","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"jsx_element","named":true},{"type":"jsx_expression","named":true},{"type":"jsx_namespace_name","named":true},{"type":"jsx_self_closing_element","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]}},{"type":"jsx_closing_element","named":true,"fields":{"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"jsx_namespace_name","named":true},{"type":"member_expression","named":true}]}}},{"type":"jsx_element","named":true,"fields":{"close_tag":{"multiple":false,"required":true,"types":[{"type":"jsx_closing_element","named":true}]},"open_tag":{"multiple":false,"required":true,"types":[{"type":"jsx_opening_element","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"html_character_reference","named":true},{"type":"jsx_element","named":true},{"type":"jsx_expression","named":true},{"type":"jsx_self_closing_element","named":true},{"type":"jsx_text","named":true}]}},{"type":"jsx_expression","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true},{"type":"spread_element","named":true}]}},{"type":"jsx_namespace_name","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"jsx_opening_element","named":true,"fields":{"attribute":{"multiple":true,"required":false,"types":[{"type":"jsx_attribute","named":true},{"type":"jsx_expression","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"jsx_namespace_name","named":true},{"type":"member_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"jsx_self_closing_element","named":true,"fields":{"attribute":{"multiple":true,"required":false,"types":[{"type":"jsx_attribute","named":true},{"type":"jsx_expression","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"jsx_namespace_name","named":true},{"type":"member_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"labeled_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"label":{"multiple":false,"required":true,"types":[{"type":"statement_identifier","named":true}]}}},{"type":"lexical_declaration","named":true,"fields":{"kind":{"multiple":false,"required":true,"types":[{"type":"const","named":false},{"type":"let","named":false}]}},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"literal_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"false","named":true},{"type":"null","named":true},{"type":"number","named":true},{"type":"string","named":true},{"type":"true","named":true},{"type":"unary_expression","named":true},{"type":"undefined","named":true}]}},{"type":"lookup_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"mapped_type_clause","named":true,"fields":{"alias":{"multiple":false,"required":false,"types":[{"type":"type","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"member_expression","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"import","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true}]}}},{"type":"meta_property","named":true,"fields":{}},{"type":"method_definition","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"method_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"parameters":{"multiple":false,"required":true,"types":[{"type":"formal_parameters","named":true}]},"return_type":{"multiple":false,"required":false,"types":[{"type":"asserts_annotation","named":true},{"type":"type_annotation","named":true},{"type":"type_predicate_annotation","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"module","named":true,"fields":{"body":{"multiple":false,"required":false,"types":[{"type":"statement_block","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true},{"type":"string","named":true}]}}},{"type":"named_imports","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"import_specifier","named":true}]}},{"type":"namespace_export","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"string","named":true}]}},{"type":"namespace_import","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true}]}},{"type":"nested_identifier","named":true,"fields":{"object":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"member_expression","named":true}]},"property":{"multiple":false,"required":true,"types":[{"type":"property_identifier","named":true}]}}},{"type":"nested_type_identifier","named":true,"fields":{"module":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"nested_identifier","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]}}},{"type":"new_expression","named":true,"fields":{"arguments":{"multiple":false,"required":false,"types":[{"type":"arguments","named":true}]},"constructor":{"multiple":false,"required":true,"types":[{"type":"primary_expression","named":true}]},"type_arguments":{"multiple":false,"required":false,"types":[{"type":"type_arguments","named":true}]}}},{"type":"non_null_expression","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"object","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"method_definition","named":true},{"type":"pair","named":true},{"type":"shorthand_property_identifier","named":true},{"type":"spread_element","named":true}]}},{"type":"object_assignment_pattern","named":true,"fields":{"left":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"object_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]},"right":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"object_pattern","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"object_assignment_pattern","named":true},{"type":"pair_pattern","named":true},{"type":"rest_pattern","named":true},{"type":"shorthand_property_identifier_pattern","named":true}]}},{"type":"object_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"call_signature","named":true},{"type":"construct_signature","named":true},{"type":"export_statement","named":true},{"type":"index_signature","named":true},{"type":"method_signature","named":true},{"type":"property_signature","named":true}]}},{"type":"omitting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"opting_type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"optional_chain","named":true,"fields":{}},{"type":"optional_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"optional_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"override_modifier","named":true,"fields":{}},{"type":"pair","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"pair_pattern","named":true,"fields":{"key":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"assignment_pattern","named":true},{"type":"pattern","named":true}]}}},{"type":"parenthesized_expression","named":true,"fields":{"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"expression","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"parenthesized_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"predefined_type","named":true,"fields":{}},{"type":"program","named":true,"root":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"hash_bang_line","named":true},{"type":"statement","named":true}]}},{"type":"property_signature","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"public_field_definition","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"computed_property_name","named":true},{"type":"number","named":true},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"string","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"readonly_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"regex","named":true,"fields":{"flags":{"multiple":false,"required":false,"types":[{"type":"regex_flags","named":true}]},"pattern":{"multiple":false,"required":true,"types":[{"type":"regex_pattern","named":true}]}}},{"type":"required_parameter","named":true,"fields":{"decorator":{"multiple":true,"required":false,"types":[{"type":"decorator","named":true}]},"name":{"multiple":false,"required":false,"types":[{"type":"identifier","named":true},{"type":"rest_pattern","named":true}]},"pattern":{"multiple":false,"required":false,"types":[{"type":"pattern","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},"children":{"multiple":true,"required":false,"types":[{"type":"accessibility_modifier","named":true},{"type":"override_modifier","named":true}]}},{"type":"rest_pattern","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"member_expression","named":true},{"type":"non_null_expression","named":true},{"type":"object_pattern","named":true},{"type":"subscript_expression","named":true},{"type":"undefined","named":true}]}},{"type":"rest_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"return_statement","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"satisfies_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true},{"type":"type","named":true}]}},{"type":"sequence_expression","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"spread_element","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}},{"type":"statement_block","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}},{"type":"string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"html_character_reference","named":true},{"type":"string_fragment","named":true}]}},{"type":"subscript_expression","named":true,"fields":{"index":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true},{"type":"predefined_type","named":true},{"type":"sequence_expression","named":true},{"type":"string","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"optional_chain":{"multiple":false,"required":false,"types":[{"type":"optional_chain","named":true}]}}},{"type":"switch_body","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"switch_case","named":true},{"type":"switch_default","named":true}]}},{"type":"switch_case","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}}},{"type":"switch_default","named":true,"fields":{"body":{"multiple":true,"required":false,"types":[{"type":"statement","named":true}]}}},{"type":"switch_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"switch_body","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"template_literal_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"string_fragment","named":true},{"type":"template_type","named":true}]}},{"type":"template_string","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"escape_sequence","named":true},{"type":"string_fragment","named":true},{"type":"template_substitution","named":true}]}},{"type":"template_substitution","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"template_type","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"infer_type","named":true},{"type":"primary_type","named":true}]}},{"type":"ternary_expression","named":true,"fields":{"alternative":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"consequence":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]}}},{"type":"throw_statement","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"sequence_expression","named":true}]}},{"type":"try_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement_block","named":true}]},"finalizer":{"multiple":false,"required":false,"types":[{"type":"finally_clause","named":true}]},"handler":{"multiple":false,"required":false,"types":[{"type":"catch_clause","named":true}]}}},{"type":"tuple_type","named":true,"fields":{},"children":{"multiple":true,"required":false,"types":[{"type":"optional_parameter","named":true},{"type":"optional_type","named":true},{"type":"required_parameter","named":true},{"type":"rest_type","named":true},{"type":"type","named":true}]}},{"type":"type_alias_declaration","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"type_parameters":{"multiple":false,"required":false,"types":[{"type":"type_parameters","named":true}]},"value":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_arguments","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"type_parameter","named":true,"fields":{"constraint":{"multiple":false,"required":false,"types":[{"type":"constraint","named":true}]},"name":{"multiple":false,"required":true,"types":[{"type":"type_identifier","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"default_type","named":true}]}}},{"type":"type_parameters","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type_parameter","named":true}]}},{"type":"type_predicate","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"identifier","named":true},{"type":"this","named":true}]},"type":{"multiple":false,"required":true,"types":[{"type":"type","named":true}]}}},{"type":"type_predicate_annotation","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"type_predicate","named":true}]}},{"type":"type_query","named":true,"fields":{},"children":{"multiple":false,"required":true,"types":[{"type":"call_expression","named":true},{"type":"identifier","named":true},{"type":"instantiation_expression","named":true},{"type":"member_expression","named":true},{"type":"subscript_expression","named":true},{"type":"this","named":true}]}},{"type":"unary_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true},{"type":"number","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"!","named":false},{"type":"+","named":false},{"type":"-","named":false},{"type":"delete","named":false},{"type":"typeof","named":false},{"type":"void","named":false},{"type":"~","named":false}]}}},{"type":"union_type","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"type","named":true}]}},{"type":"update_expression","named":true,"fields":{"argument":{"multiple":false,"required":true,"types":[{"type":"expression","named":true}]},"operator":{"multiple":false,"required":true,"types":[{"type":"++","named":false},{"type":"--","named":false}]}}},{"type":"variable_declaration","named":true,"fields":{},"children":{"multiple":true,"required":true,"types":[{"type":"variable_declarator","named":true}]}},{"type":"variable_declarator","named":true,"fields":{"name":{"multiple":false,"required":true,"types":[{"type":"array_pattern","named":true},{"type":"identifier","named":true},{"type":"object_pattern","named":true}]},"type":{"multiple":false,"required":false,"types":[{"type":"type_annotation","named":true}]},"value":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}}},{"type":"while_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"condition":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"with_statement","named":true,"fields":{"body":{"multiple":false,"required":true,"types":[{"type":"statement","named":true}]},"object":{"multiple":false,"required":true,"types":[{"type":"parenthesized_expression","named":true}]}}},{"type":"yield_expression","named":true,"fields":{},"children":{"multiple":false,"required":false,"types":[{"type":"expression","named":true}]}},{"type":"!","named":false},{"type":"!=","named":false},{"type":"!==","named":false},{"type":"\\"","named":false},{"type":"${","named":false},{"type":"%","named":false},{"type":"%=","named":false},{"type":"&","named":false},{"type":"&&","named":false},{"type":"&&=","named":false},{"type":"&=","named":false},{"type":"\'","named":false},{"type":"(","named":false},{"type":")","named":false},{"type":"*","named":false},{"type":"**","named":false},{"type":"**=","named":false},{"type":"*=","named":false},{"type":"+","named":false},{"type":"++","named":false},{"type":"+=","named":false},{"type":"+?:","named":false},{"type":",","named":false},{"type":"-","named":false},{"type":"--","named":false},{"type":"-=","named":false},{"type":"-?:","named":false},{"type":".","named":false},{"type":"...","named":false},{"type":"/","named":false},{"type":"/=","named":false},{"type":"/>","named":false},{"type":":","named":false},{"type":";","named":false},{"type":"<","named":false},{"type":"</","named":false},{"type":"<<","named":false},{"type":"<<=","named":false},{"type":"<=","named":false},{"type":"=","named":false},{"type":"==","named":false},{"type":"===","named":false},{"type":"=>","named":false},{"type":">","named":false},{"type":">=","named":false},{"type":">>","named":false},{"type":">>=","named":false},{"type":">>>","named":false},{"type":">>>=","named":false},{"type":"?","named":false},{"type":"?.","named":false},{"type":"?:","named":false},{"type":"??","named":false},{"type":"??=","named":false},{"type":"@","named":false},{"type":"[","named":false},{"type":"]","named":false},{"type":"^","named":false},{"type":"^=","named":false},{"type":"`","named":false},{"type":"abstract","named":false},{"type":"accessor","named":false},{"type":"any","named":false},{"type":"as","named":false},{"type":"assert","named":false},{"type":"asserts","named":false},{"type":"async","named":false},{"type":"await","named":false},{"type":"boolean","named":false},{"type":"break","named":false},{"type":"case","named":false},{"type":"catch","named":false},{"type":"class","named":false},{"type":"comment","named":true},{"type":"const","named":false},{"type":"continue","named":false},{"type":"debugger","named":false},{"type":"declare","named":false},{"type":"default","named":false},{"type":"delete","named":false},{"type":"do","named":false},{"type":"else","named":false},{"type":"enum","named":false},{"type":"escape_sequence","named":true},{"type":"export","named":false},{"type":"extends","named":false},{"type":"false","named":true},{"type":"finally","named":false},{"type":"for","named":false},{"type":"from","named":false},{"type":"function","named":false},{"type":"get","named":false},{"type":"global","named":false},{"type":"hash_bang_line","named":true},{"type":"html_character_reference","named":true},{"type":"html_comment","named":true},{"type":"if","named":false},{"type":"implements","named":false},{"type":"import","named":false},{"type":"in","named":false},{"type":"infer","named":false},{"type":"instanceof","named":false},{"type":"interface","named":false},{"type":"is","named":false},{"type":"jsx_text","named":true},{"type":"keyof","named":false},{"type":"let","named":false},{"type":"meta","named":false},{"type":"module","named":false},{"type":"namespace","named":false},{"type":"never","named":false},{"type":"new","named":false},{"type":"null","named":true},{"type":"number","named":true},{"type":"number","named":false},{"type":"object","named":false},{"type":"of","named":false},{"type":"override","named":false},{"type":"private","named":false},{"type":"private_property_identifier","named":true},{"type":"property_identifier","named":true},{"type":"protected","named":false},{"type":"public","named":false},{"type":"readonly","named":false},{"type":"regex_flags","named":true},{"type":"regex_pattern","named":true},{"type":"require","named":false},{"type":"return","named":false},{"type":"satisfies","named":false},{"type":"set","named":false},{"type":"shorthand_property_identifier","named":true},{"type":"shorthand_property_identifier_pattern","named":true},{"type":"statement_identifier","named":true},{"type":"static","named":false},{"type":"string","named":false},{"type":"string_fragment","named":true},{"type":"super","named":true},{"type":"switch","named":false},{"type":"symbol","named":false},{"type":"target","named":false},{"type":"this","named":true},{"type":"this_type","named":true},{"type":"throw","named":false},{"type":"true","named":true},{"type":"try","named":false},{"type":"type","named":false},{"type":"type_identifier","named":true},{"type":"typeof","named":false},{"type":"undefined","named":true},{"type":"unique symbol","named":false},{"type":"unknown","named":false},{"type":"using","named":false},{"type":"var","named":false},{"type":"void","named":false},{"type":"while","named":false},{"type":"with","named":false},{"type":"yield","named":false},{"type":"{","named":false},{"type":"{|","named":false},{"type":"|","named":false},{"type":"|=","named":false},{"type":"||","named":false},{"type":"||=","named":false},{"type":"|}","named":false},{"type":"}","named":false},{"type":"~","named":false}]');
160
+ var L;
161
+ function ne() {
162
+ return L || (L = 1, (function(p) {
163
+ const u = C.join(__dirname, "..", "..");
164
+ p.exports = typeof process.versions.bun == "string" ? v(`../../prebuilds/${process.platform}-${process.arch}/tree-sitter-typescript.node`) : re()(u);
1862
165
  try {
1863
- s.exports.typescript.nodeTypeInfo = Rt, s.exports.tsx.nodeTypeInfo = Ct;
166
+ p.exports.typescript.nodeTypeInfo = ae, p.exports.tsx.nodeTypeInfo = pe;
1864
167
  } catch {
1865
168
  }
1866
- })(z)), z.exports;
1867
- }
1868
- var $t = Et();
1869
- const oe = /* @__PURE__ */ ze($t);
1870
- class fr {
1871
- /** @purpose Lazy-initialized tree-sitter parser instance */
1872
- _parser;
1873
- /**
1874
- * @param filePath Absolute path to the TypeScript source file.
1875
- * @param [content] Optional pre-loaded file content, bypasses disk read.
1876
- * @returns Parse result with exported entities or an error.
1877
- * @see {DbcAstAdapter#parseFile} in ../../dbc-ast-adapter.types.ts
1878
- */
1879
- async parseFile(e, t) {
1880
- try {
1881
- _.debug(`[DbcTsAstAdapter#parseFile] [idle → reading] ${e}`);
1882
- const n = t ?? L(e, "utf8"), a = this._initializeParser().parse(n);
1883
- if (a.rootNode.hasError) {
1884
- const u = this._findErrorNode(a.rootNode), l = u ? ` at line ${u.startPosition.row + 1}` : "";
1885
- return _.warn(`[DbcTsAstAdapter#parseFile] [reading → parse-failed] ${e}${l}`), { ok: !1, error: `Syntax error in ${e}${l}` };
1886
- }
1887
- const p = this._extractExported(a.rootNode, n);
1888
- return _.info(
1889
- `[DbcTsAstAdapter#parseFile] [reading → parsed] ${e} (${p.length} entities)`
1890
- ), { ok: !0, exported: p };
1891
- } catch (n) {
1892
- if (n instanceof Error && "code" in n && n.code === "ENOENT")
1893
- return _.warn(`[DbcTsAstAdapter#parseFile] [reading → not-found] ${e}`), { ok: !1, error: `File not found: ${e}` };
1894
- const a = new Error(`[DbcTsAstAdapter#parseFile] Parse failed for ${e}`, {
1895
- cause: n
1896
- });
1897
- return _.error(`[DbcTsAstAdapter#parseFile] [reading → failed] ${e}`, { error: a }), { ok: !1, error: `Failed to parse ${e}: ${String(n)}` };
1898
- }
1899
- }
1900
- /**
1901
- * @purpose Lazy-initializes the tree-sitter Parser with the TypeScript grammar.
1902
- * @returns Configured Parser instance.
1903
- */
1904
- _initializeParser() {
1905
- if (!this._parser) {
1906
- this._parser = new Fe();
1907
- const e = oe.tsx ?? oe;
1908
- this._parser.setLanguage(e);
1909
- }
1910
- return this._parser;
1911
- }
1912
- /**
1913
- * @purpose Walks the root AST node and extracts all exported entities,
1914
- * skipping re-exports.
1915
- * @param root Root CST node.
1916
- * @param source Full source text for slicing.
1917
- * @returns Array of exported entities.
1918
- */
1919
- _extractExported(e, t) {
1920
- const n = [];
1921
- let r;
1922
- for (let a = 0; a < e.childCount; a += 1) {
1923
- const i = e.child(a);
1924
- if (i) {
1925
- if (i.type === "comment") {
1926
- const p = t.slice(i.startIndex, i.endIndex);
1927
- p.startsWith("/**") ? r = {
1928
- text: p,
1929
- startLine: i.startPosition.row + 1,
1930
- startCol: i.startPosition.column + 1
1931
- } : r = void 0;
1932
- continue;
1933
- }
1934
- if (i.type === "export_statement") {
1935
- const p = this._extractExportEntity(i, t, r);
1936
- p && n.push(p), r = void 0;
1937
- continue;
1938
- }
1939
- i.type !== "comment" && (r = void 0);
1940
- }
1941
- }
1942
- return n;
1943
- }
1944
- /**
1945
- * @purpose Extracts a single exported entity from an export_statement node.
1946
- * Skips re-exports.
1947
- * @param node export_statement node.
1948
- * @param source Full source text.
1949
- * @param pendingContract JSDoc contract that precedes this export, if any.
1950
- * @returns Exported entity or undefined for re-exports.
1951
- */
1952
- _extractExportEntity(e, t, n) {
1953
- if (this._isReExport(e))
1954
- return;
1955
- let r = !1, a = null;
1956
- for (let f = 0; f < e.childCount; f += 1) {
1957
- const m = e.child(f);
1958
- if (m) {
1959
- if (m.type === "default") {
1960
- r = !0;
1961
- continue;
1962
- }
1963
- m.type === "export" || m.type === ";" || !a && m.type !== "export" && m.type !== ";" && (a = m);
1964
- }
1965
- }
1966
- if (!a)
1967
- return;
1968
- const i = this._mapKind(a.type, r), p = this._extractName(a, t, r), u = this._extractSignature(a, t), l = this._extractMembers(a, t, i), d = i === "class" ? this._hasImplements(a) : void 0, y = n ? {
1969
- text: n.text,
1970
- startLine: n.startLine,
1971
- startCol: n.startCol
1972
- } : void 0;
1973
- return {
1974
- name: p,
1975
- kind: i,
1976
- members: l,
1977
- contract: y,
1978
- signature: u,
1979
- implementsInterfaces: d
1980
- };
1981
- }
1982
- /**
1983
- * @purpose Determines whether an export_statement is a re-export.
1984
- * @param node export_statement node.
1985
- * @returns True if the export is a re-export that should be skipped.
1986
- */
1987
- _isReExport(e) {
1988
- for (let t = 0; t < e.childCount; t += 1) {
1989
- const n = e.child(t);
1990
- if (n && (n.type === "export_clause" || n.type === "*"))
1991
- return !0;
1992
- }
1993
- return !1;
1994
- }
1995
- /**
1996
- * @purpose Maps a declaration node type to an entity kind string.
1997
- * @param nodeType tree-sitter node type.
1998
- * @param isDefault Whether this is a default export.
1999
- * @returns Entity kind.
2000
- */
2001
- _mapKind(e, t) {
2002
- switch (e) {
2003
- case "function_declaration":
2004
- case "generator_function_declaration":
2005
- return "function";
2006
- case "class_declaration":
2007
- return "class";
2008
- case "interface_declaration":
2009
- return "interface";
2010
- case "type_alias_declaration":
2011
- return "type";
2012
- case "enum_declaration":
2013
- return "enum";
2014
- case "lexical_declaration":
2015
- case "variable_declaration":
2016
- return "const";
2017
- default:
2018
- return t ? "export-default" : e;
2019
- }
2020
- }
2021
- /**
2022
- * @purpose Extracts the entity name from a declaration node.
2023
- * @param node Declaration node.
2024
- * @param source Full source text.
2025
- * @param isDefault Whether this is a default export.
2026
- * @returns Entity name.
2027
- */
2028
- _extractName(e, t, n) {
2029
- const r = e.childForFieldName?.("name") ?? null;
2030
- if (r)
2031
- return t.slice(r.startIndex, r.endIndex);
2032
- for (let a = 0; a < e.childCount; a += 1) {
2033
- const i = e.child(a);
2034
- if (i) {
2035
- if (i.type === "variable_declarator") {
2036
- const p = i.child(0);
2037
- if (p)
2038
- return t.slice(p.startIndex, p.endIndex);
2039
- }
2040
- if (i.type === "identifier" && n)
2041
- return t.slice(i.startIndex, i.endIndex);
2042
- }
2043
- }
2044
- return n ? "_default" : "unknown";
2045
- }
2046
- /**
2047
- * @purpose Extracts signature info (params + returnType) from a callable declaration.
2048
- * @param node Declaration node.
2049
- * @param source Full source text.
2050
- * @returns Signature info with empty arrays for non-callable entities.
2051
- */
2052
- _extractSignature(e, t) {
2053
- const n = [];
2054
- let r = "void";
2055
- const a = this._findChild(e, "formal_parameters");
2056
- if (a)
2057
- for (let p = 0; p < a.childCount; p += 1) {
2058
- const u = a.child(p);
2059
- u && (u.type === "required_parameter" || u.type === "optional_parameter") && n.push(this._extractParam(u, t));
2060
- }
2061
- if (e.type === "function_type") {
2062
- const p = [];
2063
- for (let l = 0; l < e.childCount; l += 1) {
2064
- const d = e.child(l);
2065
- d && p.push(d);
2066
- }
2067
- const u = p.findIndex((l) => l.type === "=>");
2068
- return u >= 0 && u + 1 < p.length && (r = t.slice(p[u + 1].startIndex, p[u + 1].endIndex).trim(), r || (r = "unknown")), { params: n, returnType: r };
2069
- }
2070
- const i = e.childForFieldName?.("return_type") ?? null;
2071
- return i && (r = t.slice(i.startIndex + 1, i.endIndex).trim(), r || (r = "unknown")), n.length === 0 && !i && (r = "void"), { params: n, returnType: r };
2072
- }
2073
- /**
2074
- * @purpose Extracts a single parameter (required or optional) from the formal_parameters list.
2075
- * @param paramNode required_parameter or optional_parameter node.
2076
- * @param source Full source text.
2077
- * @returns Parameter info.
2078
- */
2079
- _extractParam(e, t) {
2080
- let n = "", r = "any", a = e.type === "optional_parameter", i = !1;
2081
- for (let p = 0; p < e.childCount; p += 1) {
2082
- const u = e.child(p);
2083
- if (u) {
2084
- if (u.type === "rest_pattern") {
2085
- i = !0;
2086
- for (let l = 0; l < u.childCount; l += 1) {
2087
- const d = u.child(l);
2088
- d && (d.type === "identifier" || d.type === "object_pattern" || d.type === "array_pattern") && (n = t.slice(d.startIndex, d.endIndex));
2089
- }
2090
- continue;
2091
- }
2092
- if (u.type === "...") {
2093
- i = !0;
2094
- continue;
2095
- }
2096
- if (u.type === "?") {
2097
- a = !0;
2098
- continue;
2099
- }
2100
- if (u.type === "=") {
2101
- a = !0;
2102
- continue;
2103
- }
2104
- if (u.type === "identifier" || u.type === "object_pattern" || u.type === "array_pattern") {
2105
- n = t.slice(u.startIndex, u.endIndex);
2106
- continue;
2107
- }
2108
- if (u.type === "type_annotation") {
2109
- for (let l = 0; l < u.childCount; l += 1) {
2110
- const d = u.child(l);
2111
- d && d.type !== ":" && (r = t.slice(d.startIndex, d.endIndex));
2112
- }
2113
- continue;
2114
- }
2115
- }
2116
- }
2117
- return { name: n, type: r, optional: a, isRest: i };
2118
- }
2119
- /**
2120
- * @purpose Extracts members of a class, interface, or enum entity.
2121
- * @param node Declaration node.
2122
- * @param source Full source text.
2123
- * @param kind Entity kind.
2124
- * @returns Array of members (empty for non-collection entities).
2125
- */
2126
- _extractMembers(e, t, n) {
2127
- return n === "class" ? this._extractClassMembers(e, t) : n === "interface" ? this._extractInterfaceMembers(e, t) : n === "enum" ? this._extractEnumMembers(e, t) : n === "type" ? this._extractTypeAliasMembers(e, t) : [];
2128
- }
2129
- /**
2130
- * @purpose Extracts members from a class declaration body.
2131
- * @param node class_declaration node.
2132
- * @param source Full source text.
2133
- * @returns Array of class members.
2134
- */
2135
- _extractClassMembers(e, t) {
2136
- const n = e.childForFieldName?.("body") ?? null;
2137
- if (!n) return [];
2138
- const r = [];
2139
- let a;
2140
- for (let i = 0; i < n.childCount; i += 1) {
2141
- const p = n.child(i);
2142
- if (!p) continue;
2143
- if (p.type === "comment") {
2144
- const y = t.slice(p.startIndex, p.endIndex);
2145
- y.startsWith("/**") ? a = {
2146
- text: y,
2147
- startLine: p.startPosition.row + 1,
2148
- startCol: p.startPosition.column + 1
2149
- } : a = void 0;
2150
- continue;
2151
- }
2152
- if (p.type === "comment") {
2153
- a = void 0;
2154
- continue;
2155
- }
2156
- let u, l = "", d = null;
2157
- if (p.type === "method_definition" ? (l = this._extractMethodName(p, t), l === "constructor" ? u = "constructor" : this._hasToken(p, "get") ? u = "getter" : this._hasToken(p, "set") ? u = "setter" : u = "method", d = p) : p.type === "public_field_definition" && (l = this._extractFieldName(p, t), u = "field"), u && l) {
2158
- const y = d ? this._extractSignature(d, t) : { params: [], returnType: "void" }, f = a ? {
2159
- text: a.text,
2160
- startLine: a.startLine,
2161
- startCol: a.startCol
2162
- } : void 0;
2163
- r.push({ name: l, kind: u, contract: f, signature: y }), a = void 0;
2164
- } else
2165
- a = void 0;
2166
- }
2167
- return r;
2168
- }
2169
- /**
2170
- * @purpose Extracts members from an interface declaration body.
2171
- * @param node interface_declaration node.
2172
- * @param source Full source text.
2173
- * @returns Array of interface members.
2174
- */
2175
- _extractInterfaceMembers(e, t) {
2176
- const n = e.childForFieldName?.("body") ?? null;
2177
- return n ? this._extractObjectTypeMembers(n, t) : [];
2178
- }
2179
- /**
2180
- * @purpose Extracts members from a type alias with an object type literal body.
2181
- * Delegates to the same logic as interface members since object_type ≡ interface body.
2182
- * @param node type_alias_declaration node.
2183
- * @param source Full source text.
2184
- * @returns Array of object type members.
2185
- */
2186
- _extractTypeAliasMembers(e, t) {
2187
- for (let n = 0; n < e.childCount; n += 1) {
2188
- const r = e.child(n);
2189
- if (r?.type === "object_type")
2190
- return this._extractObjectTypeMembers(r, t);
2191
- }
2192
- return [];
2193
- }
2194
- /**
2195
- * @purpose Extracts members from an object_type or interface body node.
2196
- * Shared by type alias (object_type) and interface declarations.
2197
- * @param body object_type or interface_body node.
2198
- * @param source Full source text.
2199
- * @returns Array of members.
2200
- */
2201
- _extractObjectTypeMembers(e, t) {
2202
- const n = [];
2203
- let r;
2204
- for (let a = 0; a < e.childCount; a += 1) {
2205
- const i = e.child(a);
2206
- if (!i) continue;
2207
- if (i.type === "comment") {
2208
- const d = t.slice(i.startIndex, i.endIndex);
2209
- d.startsWith("/**") ? r = {
2210
- text: d,
2211
- startLine: i.startPosition.row + 1,
2212
- startCol: i.startPosition.column + 1
2213
- } : r = void 0;
2214
- continue;
2215
- }
2216
- if (i.type === "{" || i.type === "}" || i.type === ";" || i.type === ",")
2217
- continue;
2218
- let p, u = "", l = null;
2219
- if (i.type === "method_signature") {
2220
- const d = i.childForFieldName?.("name") ?? null;
2221
- d && (u = t.slice(d.startIndex, d.endIndex)), p = "interface-method", l = i;
2222
- } else if (i.type === "property_signature") {
2223
- const d = i.childForFieldName?.("name") ?? null;
2224
- d && (u = t.slice(d.startIndex, d.endIndex)), this._isFunctionTypedProperty(i) ? (p = "interface-method", l = this._findFunctionTypeNode(i)) : p = "interface-property";
2225
- }
2226
- if (p && u) {
2227
- const d = l ? this._extractSignature(l, t) : { params: [], returnType: "void" }, y = r ? {
2228
- text: r.text,
2229
- startLine: r.startLine,
2230
- startCol: r.startCol
2231
- } : void 0;
2232
- n.push({ name: u, kind: p, contract: y, signature: d }), r = void 0;
2233
- } else
2234
- r = void 0;
2235
- }
2236
- return n;
2237
- }
2238
- /**
2239
- * @purpose Checks if a property_signature node has a function type annotation.
2240
- * @param node property_signature node.
2241
- * @returns True if the property is function-typed.
2242
- */
2243
- _isFunctionTypedProperty(e) {
2244
- for (let t = 0; t < e.childCount; t += 1) {
2245
- const n = e.child(t);
2246
- if (n?.type === "type_annotation") {
2247
- for (let r = 0; r < n.childCount; r += 1)
2248
- if (n.child(r)?.type === "function_type") return !0;
2249
- }
2250
- }
2251
- return !1;
2252
- }
2253
- /**
2254
- * @purpose Finds the function_type node inside a property_signature's type annotation.
2255
- * @param node property_signature node.
2256
- * @returns The function_type node, or null.
2257
- */
2258
- _findFunctionTypeNode(e) {
2259
- for (let t = 0; t < e.childCount; t += 1) {
2260
- const n = e.child(t);
2261
- if (n?.type === "type_annotation")
2262
- for (let r = 0; r < n.childCount; r += 1) {
2263
- const a = n.child(r);
2264
- if (a?.type === "function_type") return a;
2265
- }
2266
- }
2267
- return null;
2268
- }
2269
- /**
2270
- * @purpose Extracts members from an enum declaration body.
2271
- * @param node enum_declaration node.
2272
- * @param source Full source text.
2273
- * @returns Array of enum members.
2274
- */
2275
- _extractEnumMembers(e, t) {
2276
- const n = e.childForFieldName?.("body") ?? null;
2277
- if (!n) return [];
2278
- const r = [];
2279
- let a;
2280
- for (let i = 0; i < n.childCount; i += 1) {
2281
- const p = n.child(i);
2282
- if (p) {
2283
- if (p.type === "comment") {
2284
- const u = t.slice(p.startIndex, p.endIndex);
2285
- u.startsWith("/**") ? a = {
2286
- text: u,
2287
- startLine: p.startPosition.row + 1,
2288
- startCol: p.startPosition.column + 1
2289
- } : a = void 0;
2290
- continue;
2291
- }
2292
- if (p.type === "property_identifier" || p.type === "identifier" || p.type === "string" || p.type === "shorthand_property_identifier") {
2293
- const u = t.slice(p.startIndex, p.endIndex), l = a ? {
2294
- text: a.text,
2295
- startLine: a.startLine,
2296
- startCol: a.startCol
2297
- } : void 0;
2298
- r.push({
2299
- name: u,
2300
- kind: "enum-member",
2301
- contract: l,
2302
- signature: { params: [], returnType: "void" }
2303
- }), a = void 0;
2304
- } else p.type !== "," && p.type !== "{" && p.type !== "}" && (a = void 0);
2305
- }
2306
- }
2307
- return r;
2308
- }
2309
- /**
2310
- * @purpose Extracts the method name from a method_definition node,
2311
- * handling getter/setter property names.
2312
- * @param node method_definition node.
2313
- * @param source Full source text.
2314
- * @returns Method name.
2315
- */
2316
- _extractMethodName(e, t) {
2317
- const n = e.childForFieldName?.("name") ?? null;
2318
- return n ? t.slice(n.startIndex, n.endIndex) : "unknown";
2319
- }
2320
- /**
2321
- * @purpose Extracts the field name from a public_field_definition node.
2322
- * @param node public_field_definition node.
2323
- * @param source Full source text.
2324
- * @returns Field name.
2325
- */
2326
- _extractFieldName(e, t) {
2327
- for (let n = 0; n < e.childCount; n += 1) {
2328
- const r = e.child(n);
2329
- if (r && (r.type === "property_identifier" || r.type === "identifier"))
2330
- return t.slice(r.startIndex, r.endIndex);
2331
- }
2332
- return "unknown";
2333
- }
2334
- /**
2335
- * @purpose Checks if a method_definition has a given token (e.g., 'get', 'set').
2336
- * @param node method_definition node.
2337
- * @param token Token text to search for.
2338
- * @returns True if the token is present.
2339
- */
2340
- _hasToken(e, t) {
2341
- for (let n = 0; n < e.childCount; n += 1) {
2342
- const r = e.child(n);
2343
- if (r && r.type === t)
2344
- return !0;
2345
- }
2346
- return !1;
2347
- }
2348
- /**
2349
- * @purpose Checks if a class_declaration node has an implements clause.
2350
- * @param node class_declaration node.
2351
- * @returns True if the class has `implements` clause.
2352
- */
2353
- _hasImplements(e) {
2354
- const t = this._findChild(e, "class_heritage");
2355
- return t ? this._findChild(t, "implements_clause") !== null : !1;
2356
- }
2357
- /**
2358
- * @purpose Finds a direct child node by type, returning first match.
2359
- * @param parent Parent node.
2360
- * @param type Child node type to find.
2361
- * @returns First matching child or null.
2362
- */
2363
- _findChild(e, t) {
2364
- for (let n = 0; n < e.childCount; n += 1) {
2365
- const r = e.child(n);
2366
- if (r && r.type === t)
2367
- return r;
2368
- }
2369
- return null;
2370
- }
2371
- /**
2372
- * @purpose Recursively searches for the first ERROR node in the tree.
2373
- * @param node Root node to search from.
2374
- * @returns First ERROR node found, or undefined.
2375
- */
2376
- _findErrorNode(e) {
2377
- if (e.type === "ERROR" || e.isError)
2378
- return e;
2379
- for (let t = 0; t < e.childCount; t += 1) {
2380
- const n = e.child(t);
2381
- if (!n) continue;
2382
- const r = this._findErrorNode(n);
2383
- if (r) return r;
2384
- }
2385
- }
2386
- }
2387
- class kt extends Error {
2388
- /** @purpose The conflicting provider key */
2389
- key;
2390
- /**
2391
- * @purpose Construct with the duplicate key and a trace-prefixed message.
2392
- * @param key The provider key that is already registered.
2393
- */
2394
- constructor(e) {
2395
- super(`[DuplicateProviderError] Provider with key "${e}" is already registered`), this.name = "DuplicateProviderError", this.key = e;
2396
- }
2397
- }
2398
- class At extends Error {
2399
- /** @purpose The missing provider key */
2400
- key;
2401
- /**
2402
- * @purpose Construct with the missing key and a trace-prefixed message.
2403
- * @param key The provider key that was not found.
2404
- */
2405
- constructor(e) {
2406
- super(`[ProviderNotFoundError] Provider with key "${e}" is not registered`), this.name = "ProviderNotFoundError", this.key = e;
2407
- }
2408
- }
2409
- class Tt {
2410
- /** @purpose Provider registry — maps string keys to AgentProvider instances | @invariant Empty on construction; mutated only via register/unregister */
2411
- _providers = /* @__PURE__ */ new Map();
2412
- /**
2413
- * @purpose Register a provider under a unique key; rejects on duplicate.
2414
- * @param key Unique provider identifier — non-empty string.
2415
- * @param provider The provider instance implementing AgentProvider.
2416
- * @throws {DuplicateProviderError} When key is already registered.
2417
- * @post Provider is stored in the registry under the given key.
2418
- */
2419
- register(e, t) {
2420
- if (this._providers.has(e))
2421
- throw new kt(e);
2422
- this._providers.set(e, t), _.debug(`[AgentMonitor#register] [idle → registered] ${e}`);
2423
- }
2424
- /**
2425
- * @purpose Remove a provider from the registry; no-op when the key is not found.
2426
- * @param key Provider key to remove.
2427
- * @post Provider with the given key is no longer in the registry.
2428
- */
2429
- unregister(e) {
2430
- this._providers.delete(e), _.debug(`[AgentMonitor#unregister] [registered → removed] ${e}`);
2431
- }
2432
- /**
2433
- * @purpose Scan all registered providers concurrently, aggregate and sort results by startedAt descending.
2434
- * @invariant Graceful degradation: a failing provider returns [] and does not abort other providers.
2435
- * @param [opts] Optional scan filtering (since timestamp or 'today').
2436
- * @returns All sessions from all providers, sorted by startedAt descending.
2437
- * @sideEffect Calls each registered provider's scan() — may read filesystem / database.
2438
- */
2439
- async scanAll(e) {
2440
- _.debug(`[AgentMonitor#scanAll] [idle → scanning] providers=${this._providers.size}`);
2441
- const n = (await Promise.all(
2442
- [...this._providers.values()].map(async (r) => {
2443
- try {
2444
- return await r.scan(e);
2445
- } catch (a) {
2446
- const i = new Error(`[AgentMonitor#scanAll] Provider ${r.key} failed`, {
2447
- cause: a
2448
- });
2449
- return _.error(`[AgentMonitor#scanAll] [scanning → degraded] ${r.key}`, { error: i }), [];
2450
- }
2451
- })
2452
- )).flat().sort((r, a) => a.startedAt - r.startedAt);
2453
- return _.info(`[AgentMonitor#scanAll] [scanning → completed] sessions=${n.length}`), n;
2454
- }
2455
- /**
2456
- * @purpose Scan a single provider by key; rejects when the provider is not registered.
2457
- * @param key Registered provider key.
2458
- * @param [opts] Optional scan filtering.
2459
- * @throws {ProviderNotFoundError} When the key is not registered.
2460
- * @returns Sessions from the specified provider.
2461
- * @sideEffect Calls the provider's scan() — may read filesystem / database.
2462
- */
2463
- async scanOne(e, t) {
2464
- _.debug(`[AgentMonitor#scanOne] [idle → scanning] ${e}`);
2465
- const n = this._providers.get(e);
2466
- if (n === void 0)
2467
- throw new At(e);
2468
- try {
2469
- const r = await n.scan(t);
2470
- return _.info(
2471
- `[AgentMonitor#scanOne] [scanning → completed] ${e} sessions=${r.length}`
2472
- ), r;
2473
- } catch (r) {
2474
- const a = new Error(`[AgentMonitor#scanOne] Provider ${e} failed`, { cause: r });
2475
- throw _.error(`[AgentMonitor#scanOne] [scanning → failed] ${e}`, { error: a }), a;
2476
- }
2477
- }
2478
- }
2479
- function cr() {
2480
- return new Tt();
2481
- }
2482
- function Nt(s) {
2483
- if (s.length === 0) return /* @__PURE__ */ new Map();
2484
- try {
2485
- const e = s.join(","), t = Ue(`ps -p ${e} -o pid=,pcpu=,rss=,args=`, {
2486
- encoding: "utf-8",
2487
- timeout: 5e3
2488
- }), n = /* @__PURE__ */ new Map(), r = t.trim().split(`
2489
- `);
2490
- for (const a of r) {
2491
- const i = a.trim();
2492
- if (!i) continue;
2493
- const p = i.split(/\s+/);
2494
- if (p.length < 4) continue;
2495
- const u = p[0], l = p[1], d = p[2], y = p.slice(3).join(" "), f = parseInt(u, 10), m = parseFloat(l), o = parseInt(d, 10);
2496
- isNaN(f) || isNaN(m) || isNaN(o) || n.set(f, {
2497
- pid: f,
2498
- cpuPercent: m,
2499
- memoryMb: o / 1024,
2500
- args: y
2501
- });
2502
- }
2503
- return _.debug(
2504
- `[psInfo] [idle → completed] Batch ps: ${s.length} requested, ${n.size} alive`
2505
- ), n;
2506
- } catch (e) {
2507
- const t = new Error("[psInfo] Batch ps command failed", { cause: e });
2508
- return _.warn(`[psInfo] [idle → failed] ps command error for ${s.length} PIDs`, { error: t }), /* @__PURE__ */ new Map();
2509
- }
2510
- }
2511
- function jt(s) {
2512
- const e = {}, t = s.match(/--model\s+(\S+)/);
2513
- t && (e.model = t[1]);
2514
- const n = s.match(/--effort\s+(\S+)/);
2515
- return n && (e.effort = n[1]), e;
2516
- }
2517
- function Mt(s) {
2518
- const e = s.match(/--allowedTools\s+([^"]*?)(?:\s+--|$)/);
2519
- if (!e) return;
2520
- const n = (e[1] ?? "").match(/Read\(\/\/(?:Users\/[^/]+\/Developer\/)?([^)]+?)(?:\/\*\*)?\)/);
2521
- if (!n) return;
2522
- const a = (n[1] ?? "").split("/");
2523
- return a.length <= 1 ? a[0] : a.slice(-2).join("/");
2524
- }
2525
- function Lt(s) {
2526
- try {
2527
- const e = L(s, "utf-8"), t = JSON.parse(e);
2528
- if (typeof t != "object" || t === null)
2529
- return _.warn(`[readSessionJson] [idle -> skipped] Not a JSON object: ${s}`), null;
2530
- const n = t;
2531
- return typeof n.pid != "number" || typeof n.sessionId != "string" || typeof n.cwd != "string" || typeof n.startedAt != "number" ? (_.warn(`[readSessionJson] [idle -> skipped] Missing required fields in: ${s}`), null) : {
2532
- pid: n.pid,
2533
- sessionId: n.sessionId,
2534
- cwd: n.cwd,
2535
- startedAt: n.startedAt
2536
- };
2537
- } catch (e) {
2538
- const t = new Error("[readSessionJson] Failed to parse session JSON", { cause: e });
2539
- return _.error(`[readSessionJson] [idle -> failed] ${s}`, { error: t }), null;
2540
- }
2541
- }
2542
- function Pt(s, e) {
2543
- try {
2544
- const t = s.replace(/\//g, "-"), n = M(J(), ".claude", "projects", t, `${e}.jsonl`);
2545
- if (!he(n))
2546
- return _.debug(`[readSessionTitle] [idle -> not-found] JSONL missing: ${n}`), "Unknown";
2547
- const a = L(n, "utf-8").trim().split(`
2548
- `);
2549
- for (const i of a)
2550
- try {
2551
- const p = JSON.parse(i);
2552
- if (typeof p == "object" && p !== null && p.type === "ai-title" && typeof p.aiTitle == "string")
2553
- return p.aiTitle;
2554
- } catch {
2555
- }
2556
- for (const i of a)
2557
- try {
2558
- const p = JSON.parse(i);
2559
- if (typeof p == "object" && p !== null && p.type === "user") {
2560
- const u = p.message;
2561
- if (u?.content) {
2562
- const l = typeof u.content == "string" ? u.content : Array.isArray(u.content) && u.content.length > 0 ? String(u.content[0]?.text ?? "") : "";
2563
- if (l) return l;
2564
- }
2565
- }
2566
- } catch {
2567
- }
2568
- return "Unknown";
2569
- } catch (t) {
2570
- const n = new Error("[readSessionTitle] Failed to read session title", { cause: t });
2571
- return _.warn(`[readSessionTitle] [idle -> failed] cwd=${s} sessionId=${e}`, { error: n }), "Unknown";
2572
- }
2573
- }
2574
- function Dt(s) {
2575
- try {
2576
- const e = M(J(), ".claude", "tasks", s);
2577
- if (!he(e)) return "Unknown";
2578
- const t = ge(e).filter((r) => r.endsWith(".json"));
2579
- if (t.length === 0) return "Unknown";
2580
- let n;
2581
- for (const r of t)
2582
- try {
2583
- const a = L(M(e, r), "utf-8"), i = JSON.parse(a), p = i?.subject;
2584
- if (!p) continue;
2585
- if (i?.status === "in_progress") return p;
2586
- n = n ?? p;
2587
- } catch {
2588
- }
2589
- return n ?? "Unknown";
2590
- } catch {
2591
- return "Unknown";
2592
- }
2593
- }
2594
- class _r {
2595
- /** @see {AgentProvider#key} in ../../model/agent-provider.type.ts */
2596
- key = "claude";
2597
- /** @purpose Batch ps inspection function */
2598
- _psInfo;
2599
- /** @purpose Claude CLI argument parser */
2600
- _parseClaudeArgs;
2601
- /** @purpose Session JSON file reader */
2602
- _readSessionJson;
2603
- /** @purpose Session title extractor from JSONL */
2604
- _readSessionTitle;
2605
- /** @purpose Logger instance */
2606
- _logger;
2607
- /**
2608
- * @purpose Construct with optional DI overrides for testing.
2609
- * @param [deps] Injectable function replacements; omitted deps use real implementations.
2610
- */
2611
- constructor(e) {
2612
- this._psInfo = e?.psInfo ?? Nt, this._parseClaudeArgs = e?.parseClaudeArgs ?? jt, this._readSessionJson = e?.readSessionJson ?? Lt, this._readSessionTitle = e?.readSessionTitle ?? Pt, this._logger = _;
2613
- }
2614
- /**
2615
- * @param [opts] Optional scan filtering parameters.
2616
- * @returns Parsed agent sessions array.
2617
- * @see {AgentProvider#scan} in ../../model/agent-provider.type.ts
2618
- */
2619
- async scan(e) {
2620
- this._logger.debug("[ClaudeProvider#scan] [idle -> scanning]");
2621
- const t = M(J(), ".claude", "sessions");
2622
- let n;
2623
- try {
2624
- n = ge(t).filter((d) => d.endsWith(".json"));
2625
- } catch (d) {
2626
- if (d.code === "ENOENT")
2627
- return this._logger.warn(
2628
- `[ClaudeProvider#scan] [scanning -> not-found] Sessions dir missing: ${t}`
2629
- ), [];
2630
- const y = new Error("[ClaudeProvider#scan] Failed to read sessions directory", { cause: d });
2631
- return this._logger.error("[ClaudeProvider#scan] [scanning -> failed]", { error: y }), [];
2632
- }
2633
- const r = [];
2634
- for (const d of n) {
2635
- const y = M(t, d), f = this._readSessionJson(y);
2636
- if (!f) continue;
2637
- let m = 0;
2638
- try {
2639
- m = Oe(y).mtimeMs;
2640
- } catch {
2641
- m = f.startedAt;
2642
- }
2643
- r.push({
2644
- pid: f.pid,
2645
- sessionId: f.sessionId,
2646
- cwd: f.cwd,
2647
- startedAt: f.startedAt,
2648
- lastActivityAt: m
2649
- });
2650
- }
2651
- if (r.length === 0)
2652
- return this._logger.debug("[ClaudeProvider#scan] [scanning -> empty] No valid sessions found"), [];
2653
- const a = r.map((d) => d.pid), i = this._psInfo(a), p = Date.now(), u = [];
2654
- for (const d of r) {
2655
- const y = i.get(d.pid), f = y !== void 0;
2656
- let m, o, c;
2657
- f ? (y?.cpuPercent ?? 0) > 0 ? m = "active" : (m = "idle", o = d.lastActivityAt > 0 ? (p - d.lastActivityAt) / 1e3 : void 0) : (m = "completed", c = d.lastActivityAt > 0 ? d.lastActivityAt : p);
2658
- const b = y ? this._parseClaudeArgs(y.args).model : void 0;
2659
- let I = this._readSessionTitle(d.cwd, d.sessionId);
2660
- if (I === "Unknown" && (I = Dt(d.sessionId)), I === "Unknown" && y) {
2661
- const w = Mt(y.args);
2662
- w ? I = `${O.basename(d.cwd)}: ${w}` : I = `[${O.basename(d.cwd)}] session`;
2663
- }
2664
- const R = (p - d.startedAt) / 1e3;
2665
- u.push({
2666
- provider: "claude",
2667
- pid: d.pid,
2668
- sessionId: d.sessionId,
2669
- cwd: d.cwd,
2670
- project: O.basename(d.cwd),
2671
- startedAt: d.startedAt,
2672
- lastActivityAt: d.lastActivityAt > 0 ? d.lastActivityAt : void 0,
2673
- status: m,
2674
- title: I,
2675
- model: b,
2676
- cpuPercent: y?.cpuPercent,
2677
- memoryMb: y?.memoryMb,
2678
- elapsedSeconds: R,
2679
- idleSeconds: o,
2680
- completedAt: c
2681
- });
2682
- }
2683
- let l = u;
2684
- if (e?.since !== void 0) {
2685
- const d = e.since === "today" ? Ot() : e.since;
2686
- l = u.filter((y) => y.startedAt >= d);
2687
- }
2688
- return this._logger.info(
2689
- `[ClaudeProvider#scan] [scanning -> completed] ${l.length} sessions (${u.length} total)`
2690
- ), l;
2691
- }
2692
- }
2693
- function Ot() {
2694
- const s = /* @__PURE__ */ new Date();
2695
- return s.setHours(0, 0, 0, 0), s.getTime();
2696
- }
2697
- function Ft(s, e) {
2698
- let t = "SELECT id, slug, title, directory, time_created, time_updated, agent, model, tokens_input, tokens_output, parent_id FROM session WHERE time_archived IS NULL";
2699
- const n = [], r = e?.since ?? Date.now() - 864e5;
2700
- return t += " AND time_updated >= ?", n.push(r), t += " ORDER BY time_updated DESC", s.prepare(t).all(...n);
2701
- }
2702
- function Bt(s, e) {
2703
- const n = s.prepare(
2704
- "SELECT data FROM message WHERE session_id = ? ORDER BY time_updated DESC LIMIT 1"
2705
- ).get(e);
2706
- if (!n?.data) return null;
2707
- try {
2708
- const a = JSON.parse(n.data)?.content;
2709
- return typeof a == "string" ? a : Array.isArray(a) && a.length > 0 && typeof a[0]?.text == "string" ? a[0].text : null;
2710
- } catch {
2711
- return n.data;
2712
- }
2713
- }
2714
- function Ut(s) {
2715
- if (s)
2716
- try {
2717
- return JSON.parse(s).id ?? s;
2718
- } catch {
2719
- return "unknown";
2720
- }
2721
- }
2722
- const Wt = "~/.local/share/opencode/opencode.db";
2723
- class hr {
2724
- /** @purpose Provider identifier key ('opencode') */
2725
- key = "opencode";
2726
- /** @purpose Resolved dependency injection container */
2727
- _deps;
2728
- /** @purpose Logger instance for structured logging */
2729
- _logger = _;
2730
- /**
2731
- * @purpose Construct with optional dependency injection for testing.
2732
- * @param [deps] Injectable query functions and db path overrides.
2733
- */
2734
- constructor(e) {
2735
- this._deps = {
2736
- dbPath: e?.dbPath ?? Wt,
2737
- querySessions: e?.querySessions ?? Ft,
2738
- queryLastMessage: e?.queryLastMessage ?? Bt,
2739
- parseModelJson: e?.parseModelJson ?? Ut
2740
- };
2741
- }
2742
- /**
2743
- * @param [opts] Optional scan filtering parameters.
2744
- * @returns Parsed agent sessions array.
2745
- * @see {AgentProvider#scan} in ../../model/agent-provider.type.ts
2746
- */
2747
- async scan(e) {
2748
- this._logger.debug("[OpenCodeProvider#scan] [idle → opening]");
2749
- const t = this._resolvePath(this._deps.dbPath);
2750
- let n;
2751
- try {
2752
- n = new We(t);
2753
- } catch (r) {
2754
- return this._logger.warn(`[OpenCodeProvider#scan] [opening → not_found] ${t}`, { cause: r }), [];
2755
- }
2756
- try {
2757
- const r = this._deps.querySessions(n, e), a = [];
2758
- for (const i of r) {
2759
- const p = this._deps.parseModelJson(i.model), u = this._deps.queryLastMessage(n, i.id), l = i.time_created, d = i.time_updated, y = Math.max(0, Math.round((d - l) / 1e3));
2760
- a.push({
2761
- provider: "opencode",
2762
- pid: null,
2763
- sessionId: i.slug,
2764
- parentId: i.parent_id ?? void 0,
2765
- title: i.title ?? "",
2766
- slug: i.slug,
2767
- cwd: i.directory,
2768
- project: i.directory.split("/").pop() ?? i.directory,
2769
- model: p,
2770
- agent: i.agent ?? void 0,
2771
- status: "active",
2772
- startedAt: l,
2773
- lastActivityAt: d,
2774
- elapsedSeconds: y,
2775
- tokensInput: i.tokens_input ?? void 0,
2776
- tokensOutput: i.tokens_output ?? void 0,
2777
- lastMessage: u ?? void 0
2778
- });
2779
- }
2780
- return this._logger.info(`[OpenCodeProvider#scan] [querying → scanned] ${a.length} sessions`), a;
2781
- } catch (r) {
2782
- const a = new Error("[OpenCodeProvider#scan] Query failed", { cause: r });
2783
- return this._logger.error("[OpenCodeProvider#scan] [querying → failed]", { error: a }), [];
2784
- } finally {
2785
- n.close();
2786
- }
2787
- }
2788
- /**
2789
- * @purpose Resolve tilde-prefixed path to an absolute path using the home directory.
2790
- * @param raw Raw path string potentially starting with ~/.
2791
- * @returns Absolute path with ~ resolved to os.homedir().
2792
- */
2793
- _resolvePath(e) {
2794
- return e.startsWith("~/") ? O.join(Be.homedir(), e.slice(2)) : e;
2795
- }
2796
- }
2797
- const zt = [
2798
- "status",
2799
- "title",
2800
- "lastActivityAt",
2801
- "elapsedSeconds",
2802
- "idleSeconds",
2803
- "toolCallCount",
2804
- "errorCount",
2805
- "lastMessage",
2806
- "tokensInput",
2807
- "tokensOutput"
2808
- ];
2809
- function Gt(s, e) {
2810
- _.debug("[diff] [idle → comparing]");
2811
- const t = new Map(s.map((p) => [p.sessionId, p])), n = new Map(e.map((p) => [p.sessionId, p])), r = [], a = [], i = [];
2812
- for (const p of e) {
2813
- const u = t.get(p.sessionId);
2814
- if (!u) {
2815
- r.push(p);
2816
- continue;
2817
- }
2818
- Jt(u, p) && i.push(p);
2819
- }
2820
- for (const p of s)
2821
- n.has(p.sessionId) || a.push(p);
2822
- return _.debug(
2823
- `[diff] [comparing → done] added=${r.length} removed=${a.length} updated=${i.length}`
2824
- ), { added: r, removed: a, updated: i };
2825
- }
2826
- function Jt(s, e) {
2827
- return zt.some((t) => s[t] !== e[t]);
2828
- }
2829
- const Ht = 3e5, fe = 100;
2830
- function ce(s, e) {
2831
- const t = Date.now();
2832
- for (const n of s)
2833
- n.lastActivityAt !== void 0 && t - n.lastActivityAt > e && (n.status = "idle");
2834
- }
2835
- function Vt() {
2836
- return { added: [], removed: [], updated: [] };
2837
- }
2838
- async function* gr(s, e) {
2839
- if (e.interval < fe)
2840
- throw new RangeError(
2841
- `[observe] interval must be >= ${fe}ms, got ${e.interval}`
2842
- );
2843
- const t = e.idleThresholdMs ?? Ht;
2844
- _.debug(
2845
- `[observe] [idle → initializing] interval=${e.interval}ms idleThreshold=${t}ms`
2846
- );
2847
- let n;
2848
- try {
2849
- n = await s.scanAll(), ce(n, t), _.debug(`[observe] [initializing → baseline] sessions=${n.length}`);
2850
- } catch (r) {
2851
- const a = new Error("[observe] Baseline scan failed", { cause: r });
2852
- _.error("[observe] [initializing → failed]", { error: a }), n = [];
2853
- }
2854
- for (; ; ) {
2855
- await new Promise((r) => setTimeout(r, e.interval));
2856
- try {
2857
- const r = await s.scanAll();
2858
- ce(r, t);
2859
- const a = Gt(n, r);
2860
- _.debug(
2861
- `[observe] [polling → yielded] added=${a.added.length} removed=${a.removed.length} updated=${a.updated.length}`
2862
- ), n = r, yield a;
2863
- } catch (r) {
2864
- const a = new Error("[observe] Scan cycle failed", { cause: r });
2865
- _.error("[observe] [polling → degraded]", { error: a }), yield Vt();
2866
- }
2867
- }
169
+ })(b)), b.exports;
2868
170
  }
171
+ var U = ne();
172
+ const ue = /* @__PURE__ */ W(U), me = /* @__PURE__ */ ee({
173
+ __proto__: null,
174
+ default: ue
175
+ }, [U]);
2869
176
  export {
2870
- _r as C,
2871
- or as D,
2872
- hr as O,
2873
- ut as R,
2874
- ur as V,
2875
- yr as a,
2876
- fr as b,
2877
- mr as c,
2878
- sr as d,
2879
- dr as e,
2880
- cr as f,
2881
- ze as g,
2882
- Ze as h,
2883
- F as i,
2884
- _ as l,
2885
- gr as o,
2886
- pr as p,
2887
- lr as r,
2888
- ir as s
177
+ me as i
2889
178
  };