@swc-next/types 0.0.0 → 0.3.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 (4) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +115 -0
  3. package/index.d.ts +1610 -0
  4. package/package.json +20 -4
package/index.d.ts ADDED
@@ -0,0 +1,1610 @@
1
+ // Generated by tasks/ast_tools. Do not edit.
2
+
3
+ export interface BaseNode {
4
+ start: number;
5
+ end: number;
6
+ }
7
+
8
+ export type SourceType = "module" | "script" | "commonjs" | "unambiguous";
9
+
10
+ export type Lang = "js" | "ts" | "jsx" | "tsx" | "dts";
11
+
12
+ export type MethodDefinitionKind = "constructor" | "method" | "get" | "set";
13
+
14
+ export type Accessibility = null | "public" | "private" | "protected";
15
+
16
+ export type ClassType = "ClassDeclaration" | "ClassExpression";
17
+
18
+ export type BinaryOperator =
19
+ | "=="
20
+ | "!="
21
+ | "==="
22
+ | "!=="
23
+ | "<"
24
+ | "<="
25
+ | ">"
26
+ | ">="
27
+ | "+"
28
+ | "-"
29
+ | "*"
30
+ | "/"
31
+ | "%"
32
+ | "**"
33
+ | "|"
34
+ | "^"
35
+ | "&"
36
+ | "<<"
37
+ | ">>"
38
+ | ">>>"
39
+ | "in"
40
+ | "instanceof";
41
+
42
+ export type LogicalOperator = "&&" | "||" | "??";
43
+
44
+ export type UnaryOperator = "-" | "+" | "!" | "~" | "typeof" | "void" | "delete";
45
+
46
+ export type UpdateOperator = "++" | "--";
47
+
48
+ export type AssignmentOperator =
49
+ | "="
50
+ | "+="
51
+ | "-="
52
+ | "*="
53
+ | "/="
54
+ | "%="
55
+ | "**="
56
+ | "<<="
57
+ | ">>="
58
+ | ">>>="
59
+ | "|="
60
+ | "^="
61
+ | "&="
62
+ | "||="
63
+ | "&&="
64
+ | "??=";
65
+
66
+ export type VariableKind = "var" | "let" | "const" | "using" | "await using";
67
+
68
+ export type FunctionType = "FunctionDeclaration" | "FunctionExpression";
69
+
70
+ export type FormalParameterKind = "formal" | "unique" | "arrow" | "signature";
71
+
72
+ export type PropertyKind = "init" | "get" | "set";
73
+
74
+ export type ImportOrExportKind = "value" | "type";
75
+
76
+ export type ImportPhase = "source" | "defer";
77
+
78
+ export type TSTypeOperatorKind = "keyof" | "unique" | "readonly";
79
+
80
+ export type TSMethodSignatureKind = "method" | "get" | "set";
81
+
82
+ export type TSModuleDeclarationKind = "namespace" | "module";
83
+
84
+ export type TSMappedTypeModifier = null | true | "+" | "-";
85
+
86
+ export interface Program extends BaseNode {
87
+ type: "Program";
88
+ body: Array<Directive | Statement>;
89
+ hashbang: Hashbang | null;
90
+ sourceType: SourceType;
91
+ }
92
+
93
+ export type Statement =
94
+ | BlockStatement
95
+ | BreakStatement
96
+ | ContinueStatement
97
+ | DebuggerStatement
98
+ | Declaration
99
+ | DoWhileStatement
100
+ | EmptyStatement
101
+ | ExportAllDeclaration
102
+ | ExportDefaultDeclaration
103
+ | ExportNamedDeclaration
104
+ | ExpressionStatement
105
+ | ForInStatement
106
+ | ForOfStatement
107
+ | ForStatement
108
+ | IfStatement
109
+ | ImportDeclaration
110
+ | LabeledStatement
111
+ | ReturnStatement
112
+ | SwitchStatement
113
+ | TSExportAssignment
114
+ | TSNamespaceExportDeclaration
115
+ | ThrowStatement
116
+ | TryStatement
117
+ | WhileStatement
118
+ | WithStatement;
119
+
120
+ export type Declaration =
121
+ | ClassDeclaration
122
+ | FunctionDeclaration
123
+ | TSDeclareFunction
124
+ | TSEnumDeclaration
125
+ | TSGlobalDeclaration
126
+ | TSImportEqualsDeclaration
127
+ | TSInterfaceDeclaration
128
+ | TSModuleDeclaration
129
+ | TSTypeAliasDeclaration
130
+ | VariableDeclaration;
131
+
132
+ export type Expression =
133
+ | ArrayExpression
134
+ | ArrowFunctionExpression
135
+ | AssignmentExpression
136
+ | AwaitExpression
137
+ | BigIntLiteral
138
+ | BinaryExpression
139
+ | BooleanLiteral
140
+ | CallExpression
141
+ | ChainExpression
142
+ | ClassExpression
143
+ | ConditionalExpression
144
+ | FunctionExpression
145
+ | IdentifierReference
146
+ | ImportExpression
147
+ | JSXElement
148
+ | JSXFragment
149
+ | LogicalExpression
150
+ | MemberExpression
151
+ | MetaProperty
152
+ | NewExpression
153
+ | NullLiteral
154
+ | NumericLiteral
155
+ | ObjectExpression
156
+ | ParenthesizedExpression
157
+ | PrivateIdentifier
158
+ | RegExpLiteral
159
+ | SequenceExpression
160
+ | StringLiteral
161
+ | Super
162
+ | TSAsExpression
163
+ | TSInstantiationExpression
164
+ | TSNonNullExpression
165
+ | TSSatisfiesExpression
166
+ | TSTypeAssertion
167
+ | TaggedTemplateExpression
168
+ | TemplateLiteral
169
+ | ThisExpression
170
+ | UnaryExpression
171
+ | UpdateExpression
172
+ | YieldExpression;
173
+
174
+ export type Pattern =
175
+ | ArrayPattern
176
+ | AssignmentPattern
177
+ | BindingIdentifier
178
+ | BindingRestElement
179
+ | ObjectPattern
180
+ | SimpleAssignmentTarget;
181
+
182
+ export type AssignmentTarget = ArrayPattern | ObjectPattern | SimpleAssignmentTarget;
183
+
184
+ export type SimpleAssignmentTarget =
185
+ | IdentifierReference
186
+ | MemberExpression
187
+ | TSAsExpression
188
+ | TSNonNullExpression
189
+ | TSSatisfiesExpression
190
+ | TSTypeAssertion;
191
+
192
+ export type PropertyKey = Expression | IdentifierName;
193
+
194
+ export type ModuleExportName = IdentifierName | StringLiteral;
195
+
196
+ export type Argument = Expression | SpreadElement;
197
+
198
+ export type ObjectPropertyKind = ObjectProperty | SpreadElement;
199
+
200
+ export type ForStatementInit = Expression | VariableDeclaration;
201
+
202
+ export type ForStatementLeft = AssignmentTarget | VariableDeclaration;
203
+
204
+ export type ArrowFunctionBody = Expression | FunctionBody;
205
+
206
+ export type FormalParameterItem = FormalParameter | TSParameterProperty;
207
+
208
+ export type FormalParameterPattern = ArrayPattern | BindingIdentifier | ObjectPattern;
209
+
210
+ export type ClassElement =
211
+ | MethodDefinition
212
+ | PropertyDefinition
213
+ | StaticBlock
214
+ | TSIndexSignature
215
+ | TSMethodDefinition;
216
+
217
+ export type ImportDeclarationSpecifier =
218
+ | ImportDefaultSpecifier
219
+ | ImportNamespaceSpecifier
220
+ | ImportSpecifier;
221
+
222
+ export type ExportDefaultDeclarationKind =
223
+ | ClassDeclaration
224
+ | Expression
225
+ | FunctionDeclaration
226
+ | TSDeclareFunction
227
+ | TSInterfaceDeclaration;
228
+
229
+ export interface Super extends BaseNode {
230
+ type: "Super";
231
+ }
232
+
233
+ export interface ThisExpression extends BaseNode {
234
+ type: "ThisExpression";
235
+ }
236
+
237
+ export interface StringLiteral extends BaseNode {
238
+ type: "Literal";
239
+ value: string;
240
+ raw: string;
241
+ }
242
+
243
+ export type Literal = StringLiteral | NumericLiteral | BigIntLiteral | BooleanLiteral | NullLiteral | RegExpLiteral;
244
+
245
+ export interface NumericLiteral extends BaseNode {
246
+ type: "Literal";
247
+ value: number;
248
+ raw: string;
249
+ }
250
+
251
+ export interface BigIntLiteral extends BaseNode {
252
+ type: "Literal";
253
+ raw: string;
254
+ value: bigint | null;
255
+ bigint: string;
256
+ }
257
+
258
+ export interface BooleanLiteral extends BaseNode {
259
+ type: "Literal";
260
+ value: boolean;
261
+ raw: "false" | "true";
262
+ }
263
+
264
+ export interface NullLiteral extends BaseNode {
265
+ type: "Literal";
266
+ value: null;
267
+ raw: "null";
268
+ }
269
+
270
+ export interface RegExpLiteral extends BaseNode {
271
+ type: "Literal";
272
+ value: RegExp | null;
273
+ raw: string;
274
+ regex: { pattern: string; flags: string };
275
+ }
276
+
277
+ export interface TemplateLiteral extends BaseNode {
278
+ type: "TemplateLiteral";
279
+ quasis: Array<TemplateElement>;
280
+ expressions: Array<Expression>;
281
+ }
282
+
283
+ export interface TemplateElement extends BaseNode {
284
+ type: "TemplateElement";
285
+ tail: boolean;
286
+ value: { raw: string; cooked: string | null };
287
+ }
288
+
289
+ export type IdentifierReference = Identifier;
290
+
291
+ export interface PrivateIdentifier extends BaseNode {
292
+ type: "PrivateIdentifier";
293
+ name: string;
294
+ }
295
+
296
+ export type BindingIdentifier = Identifier;
297
+
298
+ export interface Identifier extends BaseNode {
299
+ type: "Identifier";
300
+ name: string;
301
+ decorators?: Array<Decorator>;
302
+ optional?: boolean;
303
+ typeAnnotation?: TSTypeAnnotation | null;
304
+ }
305
+
306
+ export type IdentifierName = Identifier;
307
+
308
+ export type LabelIdentifier = Identifier;
309
+
310
+ export interface AssignmentPattern extends BaseNode {
311
+ type: "AssignmentPattern";
312
+ left: Pattern;
313
+ right: Expression;
314
+ decorators?: Array<Decorator>;
315
+ optional?: boolean;
316
+ typeAnnotation?: TSTypeAnnotation | null;
317
+ }
318
+
319
+ export interface BindingRestElement extends BaseNode {
320
+ type: "RestElement";
321
+ argument: Pattern;
322
+ value?: null;
323
+ decorators?: Array<Decorator>;
324
+ optional?: boolean;
325
+ typeAnnotation?: TSTypeAnnotation | null;
326
+ }
327
+
328
+ export interface ArrayPattern extends BaseNode {
329
+ type: "ArrayPattern";
330
+ elements: Array<Pattern | null>;
331
+ decorators?: Array<Decorator>;
332
+ optional?: boolean;
333
+ typeAnnotation?: TSTypeAnnotation | null;
334
+ }
335
+
336
+ export interface ObjectPattern extends BaseNode {
337
+ type: "ObjectPattern";
338
+ properties: Array<BindingProperty | BindingRestElement>;
339
+ decorators?: Array<Decorator>;
340
+ optional?: boolean;
341
+ typeAnnotation?: TSTypeAnnotation | null;
342
+ }
343
+
344
+ export interface BindingProperty extends BaseNode {
345
+ type: "Property";
346
+ key: PropertyKey;
347
+ value: Pattern;
348
+ shorthand: boolean;
349
+ computed: boolean;
350
+ kind: "init";
351
+ method: false;
352
+ optional?: false;
353
+ }
354
+
355
+ export interface BinaryExpression extends BaseNode {
356
+ type: "BinaryExpression";
357
+ left: Expression;
358
+ right: Expression;
359
+ operator: BinaryOperator;
360
+ }
361
+
362
+ export interface LogicalExpression extends BaseNode {
363
+ type: "LogicalExpression";
364
+ left: Expression;
365
+ right: Expression;
366
+ operator: LogicalOperator;
367
+ }
368
+
369
+ export interface ConditionalExpression extends BaseNode {
370
+ type: "ConditionalExpression";
371
+ test: Expression;
372
+ consequent: Expression;
373
+ alternate: Expression;
374
+ }
375
+
376
+ export interface UnaryExpression extends BaseNode {
377
+ type: "UnaryExpression";
378
+ argument: Expression;
379
+ operator: UnaryOperator;
380
+ prefix: true;
381
+ }
382
+
383
+ export interface UpdateExpression extends BaseNode {
384
+ type: "UpdateExpression";
385
+ argument: SimpleAssignmentTarget;
386
+ operator: UpdateOperator;
387
+ prefix: boolean;
388
+ }
389
+
390
+ export interface AssignmentExpression extends BaseNode {
391
+ type: "AssignmentExpression";
392
+ left: AssignmentTarget;
393
+ right: Expression;
394
+ operator: AssignmentOperator;
395
+ }
396
+
397
+ export interface VariableDeclaration extends BaseNode {
398
+ type: "VariableDeclaration";
399
+ kind: VariableKind;
400
+ declarations: Array<VariableDeclarator>;
401
+ declare?: boolean;
402
+ }
403
+
404
+ export interface VariableDeclarator extends BaseNode {
405
+ type: "VariableDeclarator";
406
+ id: Pattern;
407
+ init: Expression | null;
408
+ definite?: boolean;
409
+ }
410
+
411
+ export interface IfStatement extends BaseNode {
412
+ type: "IfStatement";
413
+ test: Expression;
414
+ consequent: Statement;
415
+ alternate: Statement | null;
416
+ }
417
+
418
+ export interface SwitchStatement extends BaseNode {
419
+ type: "SwitchStatement";
420
+ discriminant: Expression;
421
+ cases: Array<SwitchCase>;
422
+ }
423
+
424
+ export interface SwitchCase extends BaseNode {
425
+ type: "SwitchCase";
426
+ test: Expression | null;
427
+ consequent: Array<Statement>;
428
+ }
429
+
430
+ export interface ForStatement extends BaseNode {
431
+ type: "ForStatement";
432
+ init: ForStatementInit | null;
433
+ test: Expression | null;
434
+ update: Expression | null;
435
+ body: Statement;
436
+ }
437
+
438
+ export interface ForInStatement extends BaseNode {
439
+ type: "ForInStatement";
440
+ left: ForStatementLeft;
441
+ right: Expression;
442
+ body: Statement;
443
+ }
444
+
445
+ export interface ForOfStatement extends BaseNode {
446
+ type: "ForOfStatement";
447
+ left: ForStatementLeft;
448
+ right: Expression;
449
+ body: Statement;
450
+ await: boolean;
451
+ }
452
+
453
+ export interface TryStatement extends BaseNode {
454
+ type: "TryStatement";
455
+ block: BlockStatement;
456
+ handler: CatchClause | null;
457
+ finalizer: BlockStatement | null;
458
+ }
459
+
460
+ export interface CatchClause extends BaseNode {
461
+ type: "CatchClause";
462
+ param: Pattern | null;
463
+ body: BlockStatement;
464
+ }
465
+
466
+ export interface BreakStatement extends BaseNode {
467
+ type: "BreakStatement";
468
+ label: LabelIdentifier | null;
469
+ }
470
+
471
+ export interface ContinueStatement extends BaseNode {
472
+ type: "ContinueStatement";
473
+ label: LabelIdentifier | null;
474
+ }
475
+
476
+ export interface LabeledStatement extends BaseNode {
477
+ type: "LabeledStatement";
478
+ label: LabelIdentifier;
479
+ body: Statement;
480
+ }
481
+
482
+ export interface ExpressionStatement extends BaseNode {
483
+ type: "ExpressionStatement";
484
+ expression: Expression;
485
+ directive?: string | null;
486
+ }
487
+
488
+ export interface ReturnStatement extends BaseNode {
489
+ type: "ReturnStatement";
490
+ argument: Expression | null;
491
+ }
492
+
493
+ export interface ThrowStatement extends BaseNode {
494
+ type: "ThrowStatement";
495
+ argument: Expression;
496
+ }
497
+
498
+ export interface DebuggerStatement extends BaseNode {
499
+ type: "DebuggerStatement";
500
+ }
501
+
502
+ export interface EmptyStatement extends BaseNode {
503
+ type: "EmptyStatement";
504
+ }
505
+
506
+ export interface Directive extends BaseNode {
507
+ type: "ExpressionStatement";
508
+ expression: StringLiteral;
509
+ directive: string;
510
+ }
511
+
512
+ export interface Decorator extends BaseNode {
513
+ type: "Decorator";
514
+ expression: Expression;
515
+ }
516
+
517
+ export interface Class extends BaseNode {
518
+ type: ClassType;
519
+ decorators: Array<Decorator>;
520
+ id: BindingIdentifier | null;
521
+ typeParameters?: TSTypeParameterDeclaration | null;
522
+ superClass: Expression | null;
523
+ superTypeArguments?: TSTypeParameterInstantiation | null;
524
+ implements?: Array<TSClassImplements>;
525
+ body: ClassBody;
526
+ abstract?: boolean;
527
+ declare?: boolean;
528
+ }
529
+
530
+ export type ClassDeclaration = Class & { type: "ClassDeclaration" };
531
+ export type ClassExpression = Class & { type: "ClassExpression" };
532
+
533
+ export interface ClassBody extends BaseNode {
534
+ type: "ClassBody";
535
+ body: Array<ClassElement>;
536
+ }
537
+
538
+ export interface MethodDefinition extends BaseNode {
539
+ type: "MethodDefinition" | "TSAbstractMethodDefinition";
540
+ decorators: Array<Decorator>;
541
+ key: PropertyKey;
542
+ value: FunctionExpression;
543
+ kind: MethodDefinitionKind;
544
+ computed: boolean;
545
+ static: boolean;
546
+ override?: boolean;
547
+ optional?: boolean;
548
+ accessibility?: Accessibility;
549
+ }
550
+
551
+ export interface PropertyDefinition extends BaseNode {
552
+ type: "PropertyDefinition" | "AccessorProperty" | "TSAbstractPropertyDefinition" | "TSAbstractAccessorProperty";
553
+ decorators: Array<Decorator>;
554
+ key: PropertyKey;
555
+ typeAnnotation?: TSTypeAnnotation | null;
556
+ value: Expression | null;
557
+ computed: boolean;
558
+ static: boolean;
559
+ declare?: boolean;
560
+ override?: boolean;
561
+ optional?: boolean;
562
+ definite?: boolean;
563
+ readonly?: boolean;
564
+ accessibility?: Accessibility;
565
+ }
566
+
567
+ export interface StaticBlock extends BaseNode {
568
+ type: "StaticBlock";
569
+ body: Array<Statement>;
570
+ }
571
+
572
+ export interface Function extends BaseNode {
573
+ type: FunctionType;
574
+ id: BindingIdentifier | null;
575
+ typeParameters?: TSTypeParameterDeclaration | null;
576
+ params: FormalParameters;
577
+ returnType?: TSTypeAnnotation | null;
578
+ body: FunctionBody;
579
+ generator: boolean;
580
+ async: boolean;
581
+ expression: false;
582
+ declare?: false;
583
+ }
584
+
585
+ export type FunctionDeclaration = Function & { type: "FunctionDeclaration" };
586
+ export type FunctionExpression = Function & { type: "FunctionExpression" };
587
+
588
+ export type FunctionBody = BlockStatement;
589
+
590
+ export interface BlockStatement extends BaseNode {
591
+ type: "BlockStatement";
592
+ body: Array<Statement>;
593
+ }
594
+
595
+ export interface WhileStatement extends BaseNode {
596
+ type: "WhileStatement";
597
+ test: Expression;
598
+ body: Statement;
599
+ }
600
+
601
+ export interface DoWhileStatement extends BaseNode {
602
+ type: "DoWhileStatement";
603
+ body: Statement;
604
+ test: Expression;
605
+ }
606
+
607
+ export interface WithStatement extends BaseNode {
608
+ type: "WithStatement";
609
+ object: Expression;
610
+ body: Statement;
611
+ }
612
+
613
+ export type FormalParameters = Array<FormalParameterItem | FormalParameterRest | TSThisParameter>;
614
+
615
+ export type FormalParameter = FormalParameterPattern | (AssignmentPattern & { left: FormalParameterPattern });
616
+
617
+ export type FormalParameterRest = BindingRestElement & { argument: FormalParameterPattern };
618
+
619
+ export interface ArrayExpression extends BaseNode {
620
+ type: "ArrayExpression";
621
+ elements: Array<Argument | null>;
622
+ }
623
+
624
+ export interface ObjectExpression extends BaseNode {
625
+ type: "ObjectExpression";
626
+ properties: Array<ObjectPropertyKind>;
627
+ }
628
+
629
+ export interface SpreadElement extends BaseNode {
630
+ type: "SpreadElement";
631
+ argument: Expression;
632
+ }
633
+
634
+ export interface ObjectProperty extends BaseNode {
635
+ type: "Property";
636
+ key: PropertyKey;
637
+ value: Expression;
638
+ kind: PropertyKind;
639
+ method: boolean;
640
+ shorthand: boolean;
641
+ computed: boolean;
642
+ optional?: false;
643
+ }
644
+
645
+ export interface ParenthesizedExpression extends BaseNode {
646
+ type: "ParenthesizedExpression";
647
+ expression: Expression;
648
+ }
649
+
650
+ export interface ArrowFunctionExpression extends BaseNode {
651
+ type: "ArrowFunctionExpression";
652
+ expression: boolean;
653
+ async: boolean;
654
+ typeParameters?: TSTypeParameterDeclaration | null;
655
+ params: FormalParameters;
656
+ returnType?: TSTypeAnnotation | null;
657
+ body: ArrowFunctionBody;
658
+ id: null;
659
+ generator: false;
660
+ }
661
+
662
+ export interface SequenceExpression extends BaseNode {
663
+ type: "SequenceExpression";
664
+ expressions: Array<Expression>;
665
+ }
666
+
667
+ export interface MemberExpression extends BaseNode {
668
+ type: "MemberExpression";
669
+ object: Expression;
670
+ property: PropertyKey;
671
+ computed: boolean;
672
+ optional: boolean;
673
+ }
674
+
675
+ export interface CallExpression extends BaseNode {
676
+ type: "CallExpression";
677
+ callee: Expression;
678
+ typeArguments?: TSTypeParameterInstantiation | null;
679
+ arguments: Array<Argument>;
680
+ optional: boolean;
681
+ }
682
+
683
+ export interface ChainExpression extends BaseNode {
684
+ type: "ChainExpression";
685
+ expression: CallExpression | MemberExpression | TSNonNullExpression | TSInstantiationExpression;
686
+ }
687
+
688
+ export interface TaggedTemplateExpression extends BaseNode {
689
+ type: "TaggedTemplateExpression";
690
+ tag: Expression;
691
+ typeArguments?: TSTypeParameterInstantiation | null;
692
+ quasi: TemplateLiteral;
693
+ }
694
+
695
+ export interface NewExpression extends BaseNode {
696
+ type: "NewExpression";
697
+ callee: Expression;
698
+ typeArguments?: TSTypeParameterInstantiation | null;
699
+ arguments: Array<Argument>;
700
+ }
701
+
702
+ export interface AwaitExpression extends BaseNode {
703
+ type: "AwaitExpression";
704
+ argument: Expression;
705
+ }
706
+
707
+ export interface YieldExpression extends BaseNode {
708
+ type: "YieldExpression";
709
+ argument: Expression | null;
710
+ delegate: boolean;
711
+ }
712
+
713
+ export interface MetaProperty extends BaseNode {
714
+ type: "MetaProperty";
715
+ meta: IdentifierName;
716
+ property: IdentifierName;
717
+ }
718
+
719
+ export interface ImportExpression extends BaseNode {
720
+ type: "ImportExpression";
721
+ source: Expression;
722
+ options: Expression | null;
723
+ phase: ImportPhase | null;
724
+ }
725
+
726
+ export interface ImportDeclaration extends BaseNode {
727
+ type: "ImportDeclaration";
728
+ specifiers: Array<ImportDeclarationSpecifier>;
729
+ source: StringLiteral;
730
+ attributes: Array<ImportAttribute>;
731
+ phase: ImportPhase | null;
732
+ importKind?: ImportOrExportKind;
733
+ }
734
+
735
+ export interface ImportSpecifier extends BaseNode {
736
+ type: "ImportSpecifier";
737
+ imported: ModuleExportName;
738
+ local: BindingIdentifier;
739
+ importKind?: ImportOrExportKind;
740
+ }
741
+
742
+ export interface ImportDefaultSpecifier extends BaseNode {
743
+ type: "ImportDefaultSpecifier";
744
+ local: BindingIdentifier;
745
+ }
746
+
747
+ export interface ImportNamespaceSpecifier extends BaseNode {
748
+ type: "ImportNamespaceSpecifier";
749
+ local: BindingIdentifier;
750
+ }
751
+
752
+ export interface ImportAttribute extends BaseNode {
753
+ type: "ImportAttribute";
754
+ key: ModuleExportName;
755
+ value: StringLiteral;
756
+ }
757
+
758
+ export interface ExportNamedDeclaration extends BaseNode {
759
+ type: "ExportNamedDeclaration";
760
+ declaration: Declaration | null;
761
+ specifiers: Array<ExportSpecifier>;
762
+ source: StringLiteral | null;
763
+ attributes: Array<ImportAttribute>;
764
+ exportKind?: ImportOrExportKind;
765
+ }
766
+
767
+ export interface ExportDefaultDeclaration extends BaseNode {
768
+ type: "ExportDefaultDeclaration";
769
+ declaration: ExportDefaultDeclarationKind;
770
+ exportKind?: "value";
771
+ }
772
+
773
+ export interface ExportAllDeclaration extends BaseNode {
774
+ type: "ExportAllDeclaration";
775
+ exported: ModuleExportName | null;
776
+ source: StringLiteral;
777
+ attributes: Array<ImportAttribute>;
778
+ exportKind?: ImportOrExportKind;
779
+ }
780
+
781
+ export interface ExportSpecifier extends BaseNode {
782
+ type: "ExportSpecifier";
783
+ local: ModuleExportName;
784
+ exported: ModuleExportName;
785
+ exportKind?: ImportOrExportKind;
786
+ }
787
+
788
+ export interface Hashbang extends BaseNode {
789
+ type: "Hashbang";
790
+ value: string;
791
+ }
792
+
793
+ export type TSType =
794
+ | TSAnyKeyword
795
+ | TSArrayType
796
+ | TSBigIntKeyword
797
+ | TSBooleanKeyword
798
+ | TSConditionalType
799
+ | TSConstructorType
800
+ | TSFunctionType
801
+ | TSImportType
802
+ | TSIndexedAccessType
803
+ | TSInferType
804
+ | TSIntersectionType
805
+ | TSIntrinsicKeyword
806
+ | TSJSDocNonNullableType
807
+ | TSJSDocNullableType
808
+ | TSJSDocUnknownType
809
+ | TSLiteralType
810
+ | TSMappedType
811
+ | TSNeverKeyword
812
+ | TSNullKeyword
813
+ | TSNumberKeyword
814
+ | TSObjectKeyword
815
+ | TSOptionalType
816
+ | TSParenthesizedType
817
+ | TSRestType
818
+ | TSStringKeyword
819
+ | TSSymbolKeyword
820
+ | TSTemplateLiteralType
821
+ | TSThisType
822
+ | TSTupleType
823
+ | TSTypeLiteral
824
+ | TSTypeOperator
825
+ | TSTypePredicate
826
+ | TSTypeQuery
827
+ | TSTypeReference
828
+ | TSUndefinedKeyword
829
+ | TSUnionType
830
+ | TSUnknownKeyword
831
+ | TSVoidKeyword;
832
+
833
+ export type TSTypeName = IdentifierReference | TSQualifiedName;
834
+
835
+ export type TSQualifiedNameLeft =
836
+ | BindingIdentifier
837
+ | IdentifierName
838
+ | IdentifierReference
839
+ | TSQualifiedName
840
+ | ThisExpression;
841
+
842
+ export type TSImportTypeQualifier = IdentifierName | TSQualifiedName;
843
+
844
+ export type TSTypeQueryExprName = TSImportType | TSTypeName | ThisExpression;
845
+
846
+ export type TSLiteral =
847
+ | BigIntLiteral
848
+ | BooleanLiteral
849
+ | NumericLiteral
850
+ | StringLiteral
851
+ | TemplateLiteral
852
+ | UnaryExpression & { operator: "+" | "-" };
853
+
854
+ export type TSTupleElement = TSNamedTupleMember | TSType;
855
+
856
+ export type TSTypeElement =
857
+ | TSCallSignatureDeclaration
858
+ | TSConstructSignatureDeclaration
859
+ | TSIndexSignature
860
+ | TSMethodSignature
861
+ | TSPropertySignature;
862
+
863
+ export type TSTypePredicateName = IdentifierName | TSThisType;
864
+
865
+ export type TSEnumMemberName = IdentifierName | StringLiteral | TemplateLiteral;
866
+
867
+ export type TSModuleName = BindingIdentifier | StringLiteral | TSQualifiedName;
868
+
869
+ export type TSModuleBody = TSModuleBlock | TSModuleDeclaration;
870
+
871
+ export type TSModuleReference = TSExternalModuleReference | TSTypeName;
872
+
873
+ export interface TSFunction extends BaseNode {
874
+ type: "TSDeclareFunction" | "TSEmptyBodyFunctionExpression";
875
+ id: BindingIdentifier | null;
876
+ typeParameters?: TSTypeParameterDeclaration | null;
877
+ params: FormalParameters;
878
+ returnType?: TSTypeAnnotation | null;
879
+ generator: boolean;
880
+ async: boolean;
881
+ declare: boolean;
882
+ body?: null;
883
+ expression: false;
884
+ }
885
+
886
+ export type TSDeclareFunction = TSFunction & { type: "TSDeclareFunction" };
887
+ export type TSEmptyBodyFunctionExpression = TSFunction & { type: "TSEmptyBodyFunctionExpression" };
888
+
889
+ export interface TSMethodDefinition extends BaseNode {
890
+ type: "MethodDefinition" | "TSAbstractMethodDefinition";
891
+ decorators: Array<Decorator>;
892
+ key: PropertyKey;
893
+ value: TSEmptyBodyFunctionExpression;
894
+ kind: MethodDefinitionKind;
895
+ computed: boolean;
896
+ static: boolean;
897
+ override?: boolean;
898
+ optional?: boolean;
899
+ accessibility?: Accessibility;
900
+ }
901
+
902
+ export interface TSTypeAnnotation extends BaseNode {
903
+ type: "TSTypeAnnotation";
904
+ typeAnnotation: TSType;
905
+ }
906
+
907
+ export interface TSAnyKeyword extends BaseNode {
908
+ type: "TSAnyKeyword";
909
+ }
910
+
911
+ export interface TSUnknownKeyword extends BaseNode {
912
+ type: "TSUnknownKeyword";
913
+ }
914
+
915
+ export interface TSNeverKeyword extends BaseNode {
916
+ type: "TSNeverKeyword";
917
+ }
918
+
919
+ export interface TSVoidKeyword extends BaseNode {
920
+ type: "TSVoidKeyword";
921
+ }
922
+
923
+ export interface TSNullKeyword extends BaseNode {
924
+ type: "TSNullKeyword";
925
+ }
926
+
927
+ export interface TSUndefinedKeyword extends BaseNode {
928
+ type: "TSUndefinedKeyword";
929
+ }
930
+
931
+ export interface TSStringKeyword extends BaseNode {
932
+ type: "TSStringKeyword";
933
+ }
934
+
935
+ export interface TSNumberKeyword extends BaseNode {
936
+ type: "TSNumberKeyword";
937
+ }
938
+
939
+ export interface TSBigIntKeyword extends BaseNode {
940
+ type: "TSBigIntKeyword";
941
+ }
942
+
943
+ export interface TSBooleanKeyword extends BaseNode {
944
+ type: "TSBooleanKeyword";
945
+ }
946
+
947
+ export interface TSSymbolKeyword extends BaseNode {
948
+ type: "TSSymbolKeyword";
949
+ }
950
+
951
+ export interface TSObjectKeyword extends BaseNode {
952
+ type: "TSObjectKeyword";
953
+ }
954
+
955
+ export interface TSIntrinsicKeyword extends BaseNode {
956
+ type: "TSIntrinsicKeyword";
957
+ }
958
+
959
+ export interface TSThisType extends BaseNode {
960
+ type: "TSThisType";
961
+ }
962
+
963
+ export interface TSTypeReference extends BaseNode {
964
+ type: "TSTypeReference";
965
+ typeName: TSTypeName;
966
+ typeArguments?: TSTypeParameterInstantiation | null;
967
+ }
968
+
969
+ export interface TSQualifiedName extends BaseNode {
970
+ type: "TSQualifiedName";
971
+ left: TSQualifiedNameLeft;
972
+ right: IdentifierName;
973
+ }
974
+
975
+ export interface TSTypeQuery extends BaseNode {
976
+ type: "TSTypeQuery";
977
+ exprName: TSTypeQueryExprName;
978
+ typeArguments?: TSTypeParameterInstantiation | null;
979
+ }
980
+
981
+ export interface TSImportType extends BaseNode {
982
+ type: "TSImportType";
983
+ source: StringLiteral;
984
+ options: Expression | null;
985
+ qualifier: TSImportTypeQualifier | null;
986
+ typeArguments: TSTypeParameterInstantiation | null;
987
+ }
988
+
989
+ export interface TSTypeParameter extends BaseNode {
990
+ type: "TSTypeParameter";
991
+ name: BindingIdentifier;
992
+ constraint?: TSType | null;
993
+ default?: TSType | null;
994
+ in: boolean;
995
+ out: boolean;
996
+ const: boolean;
997
+ }
998
+
999
+ export interface TSTypeParameterDeclaration extends BaseNode {
1000
+ type: "TSTypeParameterDeclaration";
1001
+ params: Array<TSTypeParameter>;
1002
+ }
1003
+
1004
+ export interface TSTypeParameterInstantiation extends BaseNode {
1005
+ type: "TSTypeParameterInstantiation";
1006
+ params: Array<TSType>;
1007
+ }
1008
+
1009
+ export interface TSLiteralType extends BaseNode {
1010
+ type: "TSLiteralType";
1011
+ literal: TSLiteral;
1012
+ }
1013
+
1014
+ export interface TSTemplateLiteralType extends BaseNode {
1015
+ type: "TSTemplateLiteralType";
1016
+ quasis: Array<TemplateElement>;
1017
+ types: Array<TSType>;
1018
+ }
1019
+
1020
+ export interface TSArrayType extends BaseNode {
1021
+ type: "TSArrayType";
1022
+ elementType: TSType;
1023
+ }
1024
+
1025
+ export interface TSIndexedAccessType extends BaseNode {
1026
+ type: "TSIndexedAccessType";
1027
+ objectType: TSType;
1028
+ indexType: TSType;
1029
+ }
1030
+
1031
+ export interface TSTupleType extends BaseNode {
1032
+ type: "TSTupleType";
1033
+ elementTypes: Array<TSTupleElement>;
1034
+ }
1035
+
1036
+ export interface TSNamedTupleMember extends BaseNode {
1037
+ type: "TSNamedTupleMember";
1038
+ label: IdentifierName;
1039
+ elementType: TSType;
1040
+ optional: boolean;
1041
+ }
1042
+
1043
+ export interface TSOptionalType extends BaseNode {
1044
+ type: "TSOptionalType";
1045
+ typeAnnotation: TSType;
1046
+ }
1047
+
1048
+ export interface TSRestType extends BaseNode {
1049
+ type: "TSRestType";
1050
+ typeAnnotation: TSTupleElement;
1051
+ }
1052
+
1053
+ export interface TSJSDocNullableType extends BaseNode {
1054
+ type: "TSJSDocNullableType";
1055
+ typeAnnotation: TSType;
1056
+ postfix: boolean;
1057
+ }
1058
+
1059
+ export interface TSJSDocNonNullableType extends BaseNode {
1060
+ type: "TSJSDocNonNullableType";
1061
+ typeAnnotation: TSType;
1062
+ postfix: boolean;
1063
+ }
1064
+
1065
+ export interface TSJSDocUnknownType extends BaseNode {
1066
+ type: "TSJSDocUnknownType";
1067
+ }
1068
+
1069
+ export interface TSUnionType extends BaseNode {
1070
+ type: "TSUnionType";
1071
+ types: Array<TSType>;
1072
+ }
1073
+
1074
+ export interface TSIntersectionType extends BaseNode {
1075
+ type: "TSIntersectionType";
1076
+ types: Array<TSType>;
1077
+ }
1078
+
1079
+ export interface TSConditionalType extends BaseNode {
1080
+ type: "TSConditionalType";
1081
+ checkType: TSType;
1082
+ extendsType: TSType;
1083
+ trueType: TSType;
1084
+ falseType: TSType;
1085
+ }
1086
+
1087
+ export interface TSInferType extends BaseNode {
1088
+ type: "TSInferType";
1089
+ typeParameter: TSTypeParameter;
1090
+ }
1091
+
1092
+ export interface TSTypeOperator extends BaseNode {
1093
+ type: "TSTypeOperator";
1094
+ operator: TSTypeOperatorKind;
1095
+ typeAnnotation: TSType;
1096
+ }
1097
+
1098
+ export interface TSParenthesizedType extends BaseNode {
1099
+ type: "TSParenthesizedType";
1100
+ typeAnnotation: TSType;
1101
+ }
1102
+
1103
+ export interface TSFunctionType extends BaseNode {
1104
+ type: "TSFunctionType";
1105
+ typeParameters?: TSTypeParameterDeclaration | null;
1106
+ params: FormalParameters;
1107
+ returnType: TSTypeAnnotation;
1108
+ }
1109
+
1110
+ export interface TSConstructorType extends BaseNode {
1111
+ type: "TSConstructorType";
1112
+ typeParameters?: TSTypeParameterDeclaration | null;
1113
+ params: FormalParameters;
1114
+ returnType: TSTypeAnnotation;
1115
+ abstract: boolean;
1116
+ }
1117
+
1118
+ export interface TSTypePredicate extends BaseNode {
1119
+ type: "TSTypePredicate";
1120
+ parameterName: TSTypePredicateName;
1121
+ typeAnnotation: TSTypeAnnotation | null;
1122
+ asserts: boolean;
1123
+ }
1124
+
1125
+ export interface TSTypeLiteral extends BaseNode {
1126
+ type: "TSTypeLiteral";
1127
+ members: Array<TSTypeElement>;
1128
+ }
1129
+
1130
+ export interface TSMappedType extends BaseNode {
1131
+ type: "TSMappedType";
1132
+ key: BindingIdentifier;
1133
+ constraint: TSType;
1134
+ nameType: TSType | null;
1135
+ typeAnnotation?: TSType | null;
1136
+ optional?: boolean | "+" | "-";
1137
+ readonly?: TSMappedTypeModifier | false;
1138
+ }
1139
+
1140
+ export interface TSPropertySignature extends BaseNode {
1141
+ type: "TSPropertySignature";
1142
+ key: PropertyKey;
1143
+ typeAnnotation?: TSTypeAnnotation | null;
1144
+ computed: boolean;
1145
+ optional: boolean;
1146
+ readonly: boolean;
1147
+ accessibility?: null;
1148
+ static?: false;
1149
+ }
1150
+
1151
+ export interface TSMethodSignature extends BaseNode {
1152
+ type: "TSMethodSignature";
1153
+ key: PropertyKey;
1154
+ typeParameters?: TSTypeParameterDeclaration | null;
1155
+ params: FormalParameters;
1156
+ returnType?: TSTypeAnnotation | null;
1157
+ kind: TSMethodSignatureKind;
1158
+ computed: boolean;
1159
+ optional: boolean;
1160
+ accessibility?: null;
1161
+ readonly: false;
1162
+ static: false;
1163
+ }
1164
+
1165
+ export interface TSCallSignatureDeclaration extends BaseNode {
1166
+ type: "TSCallSignatureDeclaration";
1167
+ typeParameters?: TSTypeParameterDeclaration | null;
1168
+ params: FormalParameters;
1169
+ returnType?: TSTypeAnnotation | null;
1170
+ }
1171
+
1172
+ export interface TSConstructSignatureDeclaration extends BaseNode {
1173
+ type: "TSConstructSignatureDeclaration";
1174
+ typeParameters?: TSTypeParameterDeclaration | null;
1175
+ params: FormalParameters;
1176
+ returnType?: TSTypeAnnotation | null;
1177
+ }
1178
+
1179
+ export interface TSIndexSignature extends BaseNode {
1180
+ type: "TSIndexSignature";
1181
+ parameters: Array<TSIndexSignatureParameter>;
1182
+ typeAnnotation: TSTypeAnnotation;
1183
+ readonly: boolean;
1184
+ static?: boolean;
1185
+ accessibility?: null;
1186
+ }
1187
+
1188
+ export interface TSTypeAliasDeclaration extends BaseNode {
1189
+ type: "TSTypeAliasDeclaration";
1190
+ id: BindingIdentifier;
1191
+ typeParameters?: TSTypeParameterDeclaration | null;
1192
+ typeAnnotation: TSType;
1193
+ declare: boolean;
1194
+ }
1195
+
1196
+ export interface TSInterfaceDeclaration extends BaseNode {
1197
+ type: "TSInterfaceDeclaration";
1198
+ id: BindingIdentifier;
1199
+ typeParameters?: TSTypeParameterDeclaration | null;
1200
+ extends: Array<TSInterfaceHeritage>;
1201
+ body: TSInterfaceBody;
1202
+ declare: boolean;
1203
+ }
1204
+
1205
+ export interface TSInterfaceBody extends BaseNode {
1206
+ type: "TSInterfaceBody";
1207
+ body: Array<TSTypeElement>;
1208
+ }
1209
+
1210
+ export interface TSInterfaceHeritage extends BaseNode {
1211
+ type: "TSInterfaceHeritage";
1212
+ expression: Expression;
1213
+ typeArguments?: TSTypeParameterInstantiation | null;
1214
+ }
1215
+
1216
+ export interface TSClassImplements extends BaseNode {
1217
+ type: "TSClassImplements";
1218
+ expression: Expression;
1219
+ typeArguments?: TSTypeParameterInstantiation | null;
1220
+ }
1221
+
1222
+ export interface TSEnumDeclaration extends BaseNode {
1223
+ type: "TSEnumDeclaration";
1224
+ id: BindingIdentifier;
1225
+ body: TSEnumBody;
1226
+ const: boolean;
1227
+ declare: boolean;
1228
+ }
1229
+
1230
+ export interface TSEnumBody extends BaseNode {
1231
+ type: "TSEnumBody";
1232
+ members: Array<TSEnumMember>;
1233
+ }
1234
+
1235
+ export interface TSEnumMember extends BaseNode {
1236
+ type: "TSEnumMember";
1237
+ id: TSEnumMemberName;
1238
+ initializer?: Expression | null;
1239
+ computed: boolean;
1240
+ }
1241
+
1242
+ export interface TSModuleDeclaration extends BaseNode {
1243
+ type: "TSModuleDeclaration";
1244
+ id: TSModuleName;
1245
+ body?: TSModuleBody | null;
1246
+ kind: TSModuleDeclarationKind;
1247
+ declare: boolean;
1248
+ global: false;
1249
+ }
1250
+
1251
+ export interface TSModuleBlock extends BaseNode {
1252
+ type: "TSModuleBlock";
1253
+ body: Array<Directive | Statement>;
1254
+ }
1255
+
1256
+ export interface TSGlobalDeclaration extends BaseNode {
1257
+ type: "TSModuleDeclaration";
1258
+ id: IdentifierName;
1259
+ body: TSModuleBlock;
1260
+ declare: boolean;
1261
+ kind: "global";
1262
+ global: true;
1263
+ }
1264
+
1265
+ export interface TSParameterProperty extends BaseNode {
1266
+ type: "TSParameterProperty";
1267
+ decorators: Array<Decorator>;
1268
+ parameter: FormalParameter;
1269
+ override: boolean;
1270
+ readonly: boolean;
1271
+ accessibility: Accessibility;
1272
+ static?: false;
1273
+ }
1274
+
1275
+ export interface TSThisParameter extends BaseNode {
1276
+ type: "Identifier";
1277
+ typeAnnotation?: TSTypeAnnotation | null;
1278
+ decorators?: Array<Decorator>;
1279
+ name: "this";
1280
+ optional: false;
1281
+ }
1282
+
1283
+ export interface TSAsExpression extends BaseNode {
1284
+ type: "TSAsExpression";
1285
+ expression: Expression;
1286
+ typeAnnotation: TSType;
1287
+ }
1288
+
1289
+ export interface TSSatisfiesExpression extends BaseNode {
1290
+ type: "TSSatisfiesExpression";
1291
+ expression: Expression;
1292
+ typeAnnotation: TSType;
1293
+ }
1294
+
1295
+ export interface TSTypeAssertion extends BaseNode {
1296
+ type: "TSTypeAssertion";
1297
+ typeAnnotation: TSType;
1298
+ expression: Expression;
1299
+ }
1300
+
1301
+ export interface TSNonNullExpression extends BaseNode {
1302
+ type: "TSNonNullExpression";
1303
+ expression: Expression;
1304
+ }
1305
+
1306
+ export interface TSInstantiationExpression extends BaseNode {
1307
+ type: "TSInstantiationExpression";
1308
+ expression: Expression;
1309
+ typeArguments: TSTypeParameterInstantiation;
1310
+ }
1311
+
1312
+ export interface TSExportAssignment extends BaseNode {
1313
+ type: "TSExportAssignment";
1314
+ expression: Expression;
1315
+ }
1316
+
1317
+ export interface TSNamespaceExportDeclaration extends BaseNode {
1318
+ type: "TSNamespaceExportDeclaration";
1319
+ id: IdentifierName;
1320
+ }
1321
+
1322
+ export interface TSImportEqualsDeclaration extends BaseNode {
1323
+ type: "TSImportEqualsDeclaration";
1324
+ id: BindingIdentifier;
1325
+ moduleReference: TSModuleReference;
1326
+ importKind: ImportOrExportKind;
1327
+ }
1328
+
1329
+ export interface TSExternalModuleReference extends BaseNode {
1330
+ type: "TSExternalModuleReference";
1331
+ expression: StringLiteral;
1332
+ }
1333
+
1334
+ export type TSIndexSignatureParameter = Identifier & { typeAnnotation: TSTypeAnnotation };
1335
+
1336
+ export type JSXElementName = JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
1337
+
1338
+ export type JSXMemberExpressionObject = JSXIdentifier | JSXMemberExpression;
1339
+
1340
+ export type JSXAttributeName = JSXIdentifier | JSXNamespacedName;
1341
+
1342
+ export type JSXAttributeItem = JSXAttribute | JSXSpreadAttribute;
1343
+
1344
+ export type JSXAttributeValue =
1345
+ | JSXElement
1346
+ | JSXExpressionContainer
1347
+ | JSXFragment
1348
+ | StringLiteral;
1349
+
1350
+ export type JSXExpression = Expression | JSXEmptyExpression;
1351
+
1352
+ export type JSXChild =
1353
+ | JSXElement
1354
+ | JSXExpressionContainer
1355
+ | JSXFragment
1356
+ | JSXSpreadChild
1357
+ | JSXText;
1358
+
1359
+ export interface JSXElement extends BaseNode {
1360
+ type: "JSXElement";
1361
+ openingElement: JSXOpeningElement;
1362
+ children: Array<JSXChild>;
1363
+ closingElement: JSXClosingElement | null;
1364
+ }
1365
+
1366
+ export interface JSXOpeningElement extends BaseNode {
1367
+ type: "JSXOpeningElement";
1368
+ name: JSXElementName;
1369
+ typeArguments?: TSTypeParameterInstantiation | null;
1370
+ attributes: Array<JSXAttributeItem>;
1371
+ selfClosing: boolean;
1372
+ }
1373
+
1374
+ export interface JSXClosingElement extends BaseNode {
1375
+ type: "JSXClosingElement";
1376
+ name: JSXElementName;
1377
+ }
1378
+
1379
+ export interface JSXFragment extends BaseNode {
1380
+ type: "JSXFragment";
1381
+ openingFragment: JSXOpeningFragment;
1382
+ children: Array<JSXChild>;
1383
+ closingFragment: JSXClosingFragment;
1384
+ }
1385
+
1386
+ export interface JSXOpeningFragment extends BaseNode {
1387
+ type: "JSXOpeningFragment";
1388
+ }
1389
+
1390
+ export interface JSXClosingFragment extends BaseNode {
1391
+ type: "JSXClosingFragment";
1392
+ }
1393
+
1394
+ export interface JSXIdentifier extends BaseNode {
1395
+ type: "JSXIdentifier";
1396
+ name: string;
1397
+ }
1398
+
1399
+ export interface JSXNamespacedName extends BaseNode {
1400
+ type: "JSXNamespacedName";
1401
+ namespace: JSXIdentifier;
1402
+ name: JSXIdentifier;
1403
+ }
1404
+
1405
+ export interface JSXMemberExpression extends BaseNode {
1406
+ type: "JSXMemberExpression";
1407
+ object: JSXMemberExpressionObject;
1408
+ property: JSXIdentifier;
1409
+ }
1410
+
1411
+ export interface JSXAttribute extends BaseNode {
1412
+ type: "JSXAttribute";
1413
+ name: JSXAttributeName;
1414
+ value: JSXAttributeValue | null;
1415
+ }
1416
+
1417
+ export interface JSXSpreadAttribute extends BaseNode {
1418
+ type: "JSXSpreadAttribute";
1419
+ argument: Expression;
1420
+ }
1421
+
1422
+ export interface JSXExpressionContainer extends BaseNode {
1423
+ type: "JSXExpressionContainer";
1424
+ expression: JSXExpression;
1425
+ }
1426
+
1427
+ export interface JSXEmptyExpression extends BaseNode {
1428
+ type: "JSXEmptyExpression";
1429
+ }
1430
+
1431
+ export interface JSXText extends BaseNode {
1432
+ type: "JSXText";
1433
+ value: string;
1434
+ raw: string;
1435
+ }
1436
+
1437
+ export interface JSXSpreadChild extends BaseNode {
1438
+ type: "JSXSpreadChild";
1439
+ expression: Expression;
1440
+ }
1441
+
1442
+ export type Node =
1443
+ | ArrayExpression
1444
+ | ArrayPattern
1445
+ | ArrowFunctionExpression
1446
+ | AssignmentExpression
1447
+ | AssignmentPattern
1448
+ | AwaitExpression
1449
+ | BigIntLiteral
1450
+ | BinaryExpression
1451
+ | BindingProperty
1452
+ | BindingRestElement
1453
+ | BlockStatement
1454
+ | BooleanLiteral
1455
+ | BreakStatement
1456
+ | CallExpression
1457
+ | CatchClause
1458
+ | ChainExpression
1459
+ | Class
1460
+ | ClassBody
1461
+ | ConditionalExpression
1462
+ | ContinueStatement
1463
+ | DebuggerStatement
1464
+ | Decorator
1465
+ | Directive
1466
+ | DoWhileStatement
1467
+ | EmptyStatement
1468
+ | ExportAllDeclaration
1469
+ | ExportDefaultDeclaration
1470
+ | ExportNamedDeclaration
1471
+ | ExportSpecifier
1472
+ | ExpressionStatement
1473
+ | ForInStatement
1474
+ | ForOfStatement
1475
+ | ForStatement
1476
+ | Function
1477
+ | Hashbang
1478
+ | Identifier
1479
+ | IfStatement
1480
+ | ImportAttribute
1481
+ | ImportDeclaration
1482
+ | ImportDefaultSpecifier
1483
+ | ImportExpression
1484
+ | ImportNamespaceSpecifier
1485
+ | ImportSpecifier
1486
+ | JSXAttribute
1487
+ | JSXClosingElement
1488
+ | JSXClosingFragment
1489
+ | JSXElement
1490
+ | JSXEmptyExpression
1491
+ | JSXExpressionContainer
1492
+ | JSXFragment
1493
+ | JSXIdentifier
1494
+ | JSXMemberExpression
1495
+ | JSXNamespacedName
1496
+ | JSXOpeningElement
1497
+ | JSXOpeningFragment
1498
+ | JSXSpreadAttribute
1499
+ | JSXSpreadChild
1500
+ | JSXText
1501
+ | LabeledStatement
1502
+ | LogicalExpression
1503
+ | MemberExpression
1504
+ | MetaProperty
1505
+ | MethodDefinition
1506
+ | NewExpression
1507
+ | NullLiteral
1508
+ | NumericLiteral
1509
+ | ObjectExpression
1510
+ | ObjectPattern
1511
+ | ObjectProperty
1512
+ | ParenthesizedExpression
1513
+ | PrivateIdentifier
1514
+ | Program
1515
+ | PropertyDefinition
1516
+ | RegExpLiteral
1517
+ | ReturnStatement
1518
+ | SequenceExpression
1519
+ | SpreadElement
1520
+ | StaticBlock
1521
+ | StringLiteral
1522
+ | Super
1523
+ | SwitchCase
1524
+ | SwitchStatement
1525
+ | TSAnyKeyword
1526
+ | TSArrayType
1527
+ | TSAsExpression
1528
+ | TSBigIntKeyword
1529
+ | TSBooleanKeyword
1530
+ | TSCallSignatureDeclaration
1531
+ | TSClassImplements
1532
+ | TSConditionalType
1533
+ | TSConstructSignatureDeclaration
1534
+ | TSConstructorType
1535
+ | TSEnumBody
1536
+ | TSEnumDeclaration
1537
+ | TSEnumMember
1538
+ | TSExportAssignment
1539
+ | TSExternalModuleReference
1540
+ | TSFunction
1541
+ | TSFunctionType
1542
+ | TSGlobalDeclaration
1543
+ | TSImportEqualsDeclaration
1544
+ | TSImportType
1545
+ | TSIndexSignature
1546
+ | TSIndexedAccessType
1547
+ | TSInferType
1548
+ | TSInstantiationExpression
1549
+ | TSInterfaceBody
1550
+ | TSInterfaceDeclaration
1551
+ | TSInterfaceHeritage
1552
+ | TSIntersectionType
1553
+ | TSIntrinsicKeyword
1554
+ | TSJSDocNonNullableType
1555
+ | TSJSDocNullableType
1556
+ | TSJSDocUnknownType
1557
+ | TSLiteralType
1558
+ | TSMappedType
1559
+ | TSMethodDefinition
1560
+ | TSMethodSignature
1561
+ | TSModuleBlock
1562
+ | TSModuleDeclaration
1563
+ | TSNamedTupleMember
1564
+ | TSNamespaceExportDeclaration
1565
+ | TSNeverKeyword
1566
+ | TSNonNullExpression
1567
+ | TSNullKeyword
1568
+ | TSNumberKeyword
1569
+ | TSObjectKeyword
1570
+ | TSOptionalType
1571
+ | TSParameterProperty
1572
+ | TSParenthesizedType
1573
+ | TSPropertySignature
1574
+ | TSQualifiedName
1575
+ | TSRestType
1576
+ | TSSatisfiesExpression
1577
+ | TSStringKeyword
1578
+ | TSSymbolKeyword
1579
+ | TSTemplateLiteralType
1580
+ | TSThisParameter
1581
+ | TSThisType
1582
+ | TSTupleType
1583
+ | TSTypeAliasDeclaration
1584
+ | TSTypeAnnotation
1585
+ | TSTypeAssertion
1586
+ | TSTypeLiteral
1587
+ | TSTypeOperator
1588
+ | TSTypeParameter
1589
+ | TSTypeParameterDeclaration
1590
+ | TSTypeParameterInstantiation
1591
+ | TSTypePredicate
1592
+ | TSTypeQuery
1593
+ | TSTypeReference
1594
+ | TSUndefinedKeyword
1595
+ | TSUnionType
1596
+ | TSUnknownKeyword
1597
+ | TSVoidKeyword
1598
+ | TaggedTemplateExpression
1599
+ | TemplateElement
1600
+ | TemplateLiteral
1601
+ | ThisExpression
1602
+ | ThrowStatement
1603
+ | TryStatement
1604
+ | UnaryExpression
1605
+ | UpdateExpression
1606
+ | VariableDeclaration
1607
+ | VariableDeclarator
1608
+ | WhileStatement
1609
+ | WithStatement
1610
+ | YieldExpression;