react_compiler_ast/
lib.rs1pub mod common;
2pub mod declarations;
3pub mod expressions;
4pub mod jsx;
5pub mod literals;
6pub mod operators;
7pub mod patterns;
8pub mod scope;
9pub mod statements;
10pub mod visitor;
11
12use serde::{Deserialize, Serialize};
13
14use crate::common::{BaseNode, Comment};
15use crate::statements::{Directive, Statement};
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct File {
20 #[serde(flatten)]
21 pub base: BaseNode,
22 pub program: Program,
23 #[serde(default)]
24 pub comments: Vec<Comment>,
25 #[serde(default)]
26 pub errors: Vec<serde_json::Value>,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct Program {
31 #[serde(flatten)]
32 pub base: BaseNode,
33 pub body: Vec<Statement>,
34 #[serde(default)]
35 pub directives: Vec<Directive>,
36 #[serde(rename = "sourceType")]
37 pub source_type: SourceType,
38 #[serde(default)]
39 pub interpreter: Option<InterpreterDirective>,
40 #[serde(
41 rename = "sourceFile",
42 default,
43 skip_serializing_if = "Option::is_none"
44 )]
45 pub source_file: Option<String>,
46}
47
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(rename_all = "lowercase")]
50pub enum SourceType {
51 Module,
52 Script,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct InterpreterDirective {
57 #[serde(flatten)]
58 pub base: BaseNode,
59 pub value: String,
60}