1#![allow(unexpected_cfgs)]
2
3use swc_atoms::Atom;
4use swc_common::{ast_node, Span};
5
6#[ast_node]
8#[derive(Eq)]
9pub struct Text {
10 pub span: Span,
11 pub value: Atom,
12}
13
14#[ast_node]
15pub struct JsDoc {
16 pub span: Span,
17
18 pub description: Text,
19 pub tags: Vec<TagItem>,
20}
21
22#[ast_node]
24pub struct TagItem {
25 pub span: Span,
26 #[cfg_attr(feature = "serde-impl", serde(rename = "tagName"))]
27 pub tag_name: Text,
28 #[cfg_attr(feature = "serde-impl", serde(flatten))]
29 pub tag: Tag,
30}
31
32#[ast_node]
33#[non_exhaustive]
34pub enum Tag {
35 #[tag("Yield")]
36 Yield(YieldTag),
37 #[tag("TypeDef")]
38 TypeDef(TypeDefTag),
39 #[tag("Throw")]
40 Throw(ThrowTag),
41 #[tag("Todo")]
42 Todo(TodoTag),
43 #[tag("Tutorial")]
44 Tutorial(TutorialTag),
45 #[tag("Static")]
46 Static(StaticTag),
47 #[tag("Summary")]
48 Summary(SummaryTag),
49 #[tag("See")]
50 See(SeeTag),
51 #[tag("Since")]
52 Since(SinceTag),
53 #[tag("Requires")]
54 Requires(RequiresTag),
55 #[tag("Override")]
56 Override(OverrideTag),
57 #[tag("Package")]
58 Package(PackageTag),
59 #[tag("Module")]
60 Module(ModuleTag),
61 #[tag("Name")]
62 Name(NameTag),
63 #[tag("Namespace")]
64 Namespace(NamespaceTag),
65 #[tag("Variation")]
66 Variation(VariationTag),
67 #[tag("Version")]
68 Version(VersionTag),
69 #[tag("MemberOf")]
70 MemberOf(MemberOfTag),
71 #[tag("Mixes")]
72 Mixes(MixesTag),
73 #[tag("Mixin")]
74 Mixin(MixinTag),
75 #[tag("Member")]
76 Member(MemberTag),
77 #[tag("Listens")]
78 Listens(ListensTag),
79 #[tag("License")]
80 License(LicenseTag),
81 #[tag("Kind")]
82 Kind(KindTag),
83 #[tag("Lends")]
84 Lends(LendsTag),
85 #[tag("Instance")]
86 Instance(InstanceTag),
87 #[tag("Interface")]
88 Interface(InterfaceTag),
89 #[tag("Inner")]
90 Inner(InnerTag),
91 #[tag("InheritDoc")]
92 InheritDoc(InheritDocTag),
93 #[tag("IgnoreTag")]
94 Ignore(IgnoreTag),
95 #[tag("HideConstructorTag")]
96 HideConstructor(HideConstructorTag),
97 #[tag("GeneratorTag")]
98 Generator(GeneratorTag),
99 #[tag("FunctionTag")]
100 Function(FunctionTag),
101 #[tag("FileTag")]
102 File(FileTag),
103 #[tag("ConstructsTag")]
104 Constructs(ConstructsTag),
105 #[tag("CopyrightTag")]
106 Copyright(CopyrightTag),
107 #[tag("AbstractTag")]
108 Abstract(AbstractTag),
109 #[tag("AccessTag")]
110 Access(AccessTag),
111 #[tag("AliasTag")]
112 Alias(AliasTag),
113 #[tag("AsyncTag")]
114 Async(AsyncTag),
115 #[tag("UnknownTag")]
116 Unknown(UnknownTag),
117 #[tag("AugmentsTag")]
118 Augments(AugmentsTag),
119 #[tag("ImplementsTag")]
120 Implements(ImplementsTag),
121 #[tag("AuthorTag")]
122 Author(AuthorTag),
123 #[tag("BorrowsTag")]
124 Borrows(BorrowsTag),
125 #[tag("ClassTag")]
126 Class(ClassTag),
127 #[tag("JSDocClassDescTag")]
128 ClassDesc(JSDocClassDescTag),
129 #[tag("ConstTag")]
130 Const(ConstTag),
131 #[tag("PublicTag")]
132 Public(PublicTag),
133 #[tag("PrivateTag")]
134 Private(PrivateTag),
135 #[tag("ProtectedTag")]
136 Protected(ProtectedTag),
137 #[tag("ReadonlyTag")]
138 Readonly(ReadonlyTag),
139 #[tag("CallbackTag")]
140 Callback(CallbackTag),
141 #[tag("EnumTag")]
142 Enum(EnumTag),
143 #[tag("ParameterTag")]
144 Parameter(ParameterTag),
145 #[tag("ReturnTag")]
146 Return(ReturnTag),
147 #[tag("ThisTag")]
148 This(ThisTag),
149 #[tag("TypeTag")]
150 Type(TypeTag),
151 #[tag("TemplateTag")]
152 Template(TemplateTag),
153 #[tag("TypedefTag")]
154 Typedef(TypedefTag),
155 #[tag("PropertyTag")]
156 Property(PropertyTag),
157 #[tag("DescriptionTag")]
158 Description(DescriptionTag),
159 #[tag("ExampleTag")]
160 Example(ExampleTag),
161 #[tag("ExportsTag")]
162 Exports(ExportsTag),
163 #[tag("ExternalTag")]
164 External(ExternalTag),
165 #[tag("DefaultTag")]
166 Default(DefaultTag),
167 #[tag("DeprecatedTag")]
168 Deprecated(DeprecatedTag),
169}
170
171#[ast_node]
172pub struct AbstractTag {
173 pub span: Span,
174}
175
176#[ast_node]
177pub struct AccessTag {
178 pub span: Span,
179 pub access: Text,
180}
181
182#[ast_node]
183pub struct AliasTag {
184 pub span: Span,
185 pub name_path: NamePath,
186}
187
188#[ast_node]
189pub struct AsyncTag {
190 pub span: Span,
191}
192
193#[ast_node]
194pub struct BorrowsTag {
195 pub span: Span,
196 pub from: NamePath,
197 pub to: NamePath,
198}
199
200#[ast_node]
201pub struct JSDocClassDescTag {
202 pub span: Span,
203 pub desc: Text,
204}
205
206#[ast_node]
207pub struct ConstTag {
208 pub span: Span,
209 pub ty: Option<Text>,
210 pub name: Option<Text>,
211}
212
213#[ast_node]
214pub struct UnknownTag {
215 pub span: Span,
216 pub extras: Text,
217}
218
219#[ast_node]
221pub struct AugmentsTag {
222 pub span: Span,
223 pub class: NamePath,
224}
225
226#[ast_node]
227pub struct ImplementsTag {
228 pub span: Span,
229 pub class: Text,
230}
231
232#[ast_node]
233pub struct ExprWithTypeArgs {
234 pub span: Span,
235
236 pub expr: Box<Expr>,
238}
239
240#[ast_node]
241pub enum Expr {
242 #[tag("Identifier")]
243 Text(Text),
244 #[tag("NamePath")]
245 Property(NamePath),
246}
247
248#[ast_node]
249pub struct AuthorTag {
250 pub span: Span,
251 pub author: Text,
253}
254
255#[ast_node]
256#[derive(Eq)]
257pub struct ClassTag {
258 pub span: Span,
259 pub ty: Option<Text>,
260 pub name: Option<Text>,
261}
262
263#[ast_node]
264#[derive(Eq)]
265pub struct PublicTag {
266 pub span: Span,
267}
268
269#[ast_node]
270#[derive(Eq)]
271pub struct PrivateTag {
272 pub span: Span,
273 pub ty: Option<Text>,
274}
275
276#[ast_node]
277#[derive(Eq)]
278pub struct ProtectedTag {
279 pub span: Span,
280 pub ty: Option<Text>,
281}
282
283#[ast_node]
284#[derive(Eq)]
285pub struct ReadonlyTag {
286 pub span: Span,
287}
288
289#[ast_node]
290pub struct CallbackTag {
291 pub span: Span,
292 pub name_path: NamePath,
293}
294
295#[ast_node]
296pub struct PropertyTag {
297 pub span: Span,
298
299 pub name_path: NamePath,
300 pub ty: Option<Text>,
301 pub desc: Text,
302}
303
304#[ast_node]
305pub struct ParameterTag {
306 pub span: Span,
307
308 pub name: Option<Text>,
309 #[cfg_attr(feature = "serde-impl", serde(rename = "typeExpression"))]
310 pub ty: Option<Text>,
311
312 pub desc: Text,
313}
314
315#[ast_node]
316#[derive(Eq)]
317pub struct EnumTag {
318 pub span: Span,
319 pub ty: Text,
320}
321
322#[ast_node]
323pub struct ReturnTag {
324 pub span: Span,
325 pub ty: Option<Text>,
326 pub description: Text,
327}
328
329#[ast_node]
330pub struct ThisTag {
331 pub span: Span,
332 pub name_path: NamePath,
333}
334
335#[ast_node]
336pub struct TypeTag {
337 pub span: Span,
338 pub name: Text,
339}
340
341#[ast_node]
342pub struct TemplateTag {
343 pub span: Span,
344 pub constraint: Option<TypeExpr>,
345}
346
347#[ast_node]
348pub struct TypedefTag {
349 pub span: Span,
350 #[cfg_attr(feature = "serde-impl", serde(rename = "full_name"))]
351 pub full_name: Option<NamespaceBody>,
352
353 pub name: Option<Text>,
354 #[cfg_attr(feature = "serde-impl", serde(rename = "typeExpression"))]
355 pub type_expr: Option<TypeExprOrTypeLit>,
356}
357
358#[ast_node]
359pub enum Type {
360 #[tag("AllType")]
362 All(AllType),
363 #[tag("UnknownType")]
365 Unknown(UnknownType),
366 #[tag("NullableType")]
367 Nullable(NullableType),
368 #[tag("NonNullableType")]
369 NonNullable(NonNullableType),
370 #[tag("OptionalType")]
371 Optional(OptionalType),
372 #[tag("FunctionType")]
373 Function(FunctionType),
374 #[tag("VariadicType")]
375 Variadic(VariadicType),
376 #[tag("NamePathType")]
378 NamePath(NamePathType),
379 #[tag("UnionType")]
380 Union(UnionType),
381 #[tag("ParenType")]
382 Paren(ParenType),
383}
384
385#[ast_node]
386pub struct UnionType {
387 pub span: Span,
388 pub types: Vec<Type>,
389}
390
391#[ast_node]
392pub struct ParenType {
393 pub span: Span,
394 pub ty: Box<Type>,
395}
396
397#[ast_node]
398#[derive(Eq)]
399pub struct AllType {
400 pub span: Span,
401}
402
403#[ast_node]
404#[derive(Eq)]
405pub struct UnknownType {
406 pub span: Span,
407}
408
409#[ast_node]
410pub struct NullableType {
411 pub span: Span,
412 pub ty: Box<Type>,
413}
414
415#[ast_node]
416pub struct NonNullableType {
417 pub span: Span,
418 pub ty: Box<Type>,
419}
420
421#[ast_node]
422pub struct OptionalType {
423 pub span: Span,
424 pub ty: Box<Type>,
425}
426
427#[ast_node]
429pub struct FunctionType {
430 pub span: Span,
431 pub ty: Box<Type>,
432}
433
434#[ast_node]
435pub struct VariadicType {
436 pub span: Span,
437 pub ty: Box<Type>,
438}
439
440#[ast_node]
441pub struct NamePathType {
442 pub span: Span,
443 pub ty: Box<Type>,
444}
445
446#[ast_node]
448pub struct TypeExpr {
449 pub span: Span,
450 pub ty: Type,
451}
452
453#[ast_node]
454pub struct NamespaceDecl {
455 pub span: Span,
456 pub name: Text,
457 pub body: Vec<NamespaceBody>,
458}
459
460#[ast_node]
461pub enum NamespaceBody {
462 #[tag("Identifier")]
463 Text(Box<Text>),
464 #[tag("NamespaceDecl")]
465 Decl(Box<NamespaceDecl>),
466}
467
468#[ast_node]
469pub enum TypeExprOrTypeLit {
470 #[tag("TypeExpr")]
471 Expr(Box<TypeExpr>),
472 #[tag("TypeLit")]
473 TypeLit(Box<TypeLit>),
474}
475
476#[ast_node]
477pub struct TypeLit {
478 pub span: Span,
479 pub tags: Vec<PropOrParam>,
480 pub is_array_type: bool,
482}
483
484#[ast_node]
485pub enum PropOrParam {
486 #[tag("PropertyTag")]
487 Prop(PropertyTag),
488 #[tag("ParameterTag")]
489 Param(ParameterTag),
490}
491
492#[ast_node]
493pub struct NamePath {
494 pub span: Span,
495 pub components: Vec<Text>,
496}
497
498#[ast_node]
499pub struct CopyrightTag {
500 pub span: Span,
501 pub text: Text,
502}
503
504#[ast_node]
505pub struct DescriptionTag {
506 pub span: Span,
507 pub text: Text,
508}
509
510#[ast_node]
511pub struct ExampleTag {
512 pub span: Span,
513 pub text: Text,
514}
515
516#[ast_node]
517pub struct ExportsTag {
518 pub span: Span,
519 pub module_name: Text,
520}
521
522#[ast_node]
523pub struct ExternalTag {
524 pub span: Span,
525 pub name: Text,
526}
527
528#[ast_node]
529pub struct ConstructsTag {
530 pub span: Span,
531 pub name: Text,
532}
533
534#[ast_node]
535pub struct DefaultTag {
536 pub span: Span,
537 pub value: Text,
538}
539
540#[ast_node]
541pub struct DeprecatedTag {
542 pub span: Span,
543 pub text: Text,
544}
545
546#[ast_node]
547pub struct FileTag {
548 pub span: Span,
549 pub text: Text,
550}
551
552#[ast_node]
553pub struct FunctionTag {
554 pub span: Span,
555 pub name: Option<Text>,
556}
557
558#[ast_node]
559pub struct GeneratorTag {
560 pub span: Span,
561}
562#[ast_node]
563pub struct HideConstructorTag {
564 pub span: Span,
565}
566
567#[ast_node]
568pub struct IgnoreTag {
569 pub span: Span,
570}
571
572#[ast_node]
573pub struct InheritDocTag {
574 pub span: Span,
575}
576
577#[ast_node]
578pub struct InnerTag {
579 pub span: Span,
580}
581
582#[ast_node]
583pub struct InstanceTag {
584 pub span: Span,
585}
586
587#[ast_node]
588pub struct InterfaceTag {
589 pub span: Span,
590 pub name: Option<Text>,
591}
592#[ast_node]
593pub struct KindTag {
594 pub span: Span,
595 pub name: Text,
596}
597
598#[ast_node]
599pub struct LendsTag {
600 pub span: Span,
601 pub name: NamePath,
602}
603
604#[ast_node]
605pub struct LicenseTag {
606 pub span: Span,
607 pub identifier: Text,
608}
609
610#[ast_node]
611pub struct ListensTag {
612 pub span: Span,
613 pub event_name: Text,
614}
615
616#[ast_node]
617pub struct MemberTag {
618 pub span: Span,
619 pub ty: Text,
620 pub name: Text,
621}
622
623#[ast_node]
624pub struct MemberOfTag {
625 pub span: Span,
626 pub parent_name_path: NamePath,
627}
628
629#[ast_node]
630pub struct TypeDefTag {
631 pub span: Span,
632 pub ty: Option<Text>,
633 pub name_path: NamePath,
634}
635
636#[ast_node]
637pub struct MixesTag {
638 pub span: Span,
639 pub name_path: NamePath,
640}
641
642#[ast_node]
643pub struct MixinTag {
644 pub span: Span,
645 pub name: Text,
646}
647
648#[ast_node]
649pub struct ModuleTag {
650 pub span: Span,
651 pub name: Text,
652 pub ty: Text,
653}
654
655#[ast_node]
656pub struct NameTag {
657 pub span: Span,
658 pub name_path: NamePath,
659}
660
661#[ast_node]
662pub struct NamespaceTag {
663 pub span: Span,
664 pub ty: Option<Text>,
665 pub name: Option<Text>,
666}
667
668#[ast_node]
669pub struct OverrideTag {
670 pub span: Span,
671}
672
673#[ast_node]
674pub struct PackageTag {
675 pub span: Span,
676 pub ty: Option<Text>,
677}
678
679#[ast_node]
680pub struct RequiresTag {
681 pub span: Span,
682 pub name_path: NamePath,
683}
684
685#[ast_node]
686pub struct SeeTag {
687 pub span: Span,
688 pub text: Text,
689}
690
691#[ast_node]
692pub struct SinceTag {
693 pub span: Span,
694 pub version: Text,
695}
696
697#[ast_node]
698pub struct SummaryTag {
699 pub span: Span,
700 pub text: Text,
701}
702
703#[ast_node]
704pub struct StaticTag {
705 pub span: Span,
706}
707
708#[ast_node]
709pub struct ThrowTag {
710 pub span: Span,
711 pub text: Text,
712}
713
714#[ast_node]
715pub struct TodoTag {
716 pub span: Span,
717 pub text: Text,
718}
719
720#[ast_node]
721pub struct TutorialTag {
722 pub span: Span,
723 pub text: Text,
724}
725
726#[ast_node]
727pub struct VariationTag {
728 pub span: Span,
729 pub number: Text,
730}
731
732#[ast_node]
733pub struct VersionTag {
734 pub span: Span,
735 pub value: Text,
736}
737
738#[ast_node]
739pub struct YieldTag {
740 pub span: Span,
741 pub value: Option<Text>,
742 pub description: Text,
743}