#![allow(dead_code)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EngineWorkspaceV1Json {
pub root: String,
pub classname_transform: ClassnameTransformModeJson,
pub settings_key: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ClassnameTransformModeJson {
#[serde(rename = "asIs")]
AsIs,
#[serde(rename = "camelCase")]
CamelCase,
#[serde(rename = "camelCaseOnly")]
CamelCaseOnly,
#[serde(rename = "dashes")]
Dashes,
#[serde(rename = "dashesOnly")]
DashesOnly,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SourceAnalysisInputV2Json {
pub file_path: String,
pub document: serde_json::Value,
#[serde(skip_serializing_if = "Option::is_none")]
pub binding_graph: Option<serde_json::Value>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StyleAnalysisInputV2Json {
pub file_path: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<String>,
pub document: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum StringTypeFactKindV2Json {
#[serde(rename = "unknown")]
Unknown,
#[serde(rename = "exact")]
Exact,
#[serde(rename = "finiteSet")]
FiniteSet,
#[serde(rename = "constrained")]
Constrained,
#[serde(rename = "top")]
Top,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum StringConstraintKindV2Json {
#[serde(rename = "prefix")]
Prefix,
#[serde(rename = "suffix")]
Suffix,
#[serde(rename = "prefixSuffix")]
PrefixSuffix,
#[serde(rename = "charInclusion")]
CharInclusion,
#[serde(rename = "composite")]
Composite,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StringTypeFactsV2Json {
pub kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub constraint_kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub prefix: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub suffix: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub min_len: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_len: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub char_must: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub char_may: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub may_include_other_chars: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub provenance: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TypeFactControlFlowBlockV2Json {
pub id: String,
pub kind: String,
pub transfer_kind: String,
pub successor_block_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol_ordinal: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub variable_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expression_kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub facts: Option<StringTypeFactsV2Json>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TypeFactControlFlowGraphV2Json {
pub entry_block_id: String,
pub blocks: Vec<TypeFactControlFlowBlockV2Json>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TypeFactEntryV2Json {
pub file_path: String,
pub expression_id: String,
pub facts: StringTypeFactsV2Json,
#[serde(skip_serializing_if = "Option::is_none")]
pub control_flow_graph: Option<TypeFactControlFlowGraphV2Json>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EngineInputV2Json {
pub version: String,
pub workspace: EngineWorkspaceV1Json,
pub sources: Vec<SourceAnalysisInputV2Json>,
pub styles: Vec<StyleAnalysisInputV2Json>,
pub type_facts: Vec<TypeFactEntryV2Json>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum ValueDomainKindV2Json {
#[serde(rename = "none")]
None,
#[serde(rename = "exact")]
Exact,
#[serde(rename = "finiteSet")]
FiniteSet,
#[serde(rename = "constrained")]
Constrained,
#[serde(rename = "top")]
Top,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum CertaintyShapeKindV2Json {
#[serde(rename = "exact")]
Exact,
#[serde(rename = "boundedFinite")]
BoundedFinite,
#[serde(rename = "constrained")]
Constrained,
#[serde(rename = "unknown")]
Unknown,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ValueDomainDerivationStepV2Json {
pub operation: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub refinement_kind: Option<String>,
pub result_kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub result_provenance: Option<String>,
pub reason: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ValueDomainDerivationV2Json {
pub schema_version: String,
pub product: String,
pub input_fact_kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub input_constraint_kind: Option<String>,
pub input_value_count: i32,
pub reduced_kind: String,
pub steps: Vec<ValueDomainDerivationStepV2Json>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ValueDomainProvenanceNodeV2Json {
pub operation: String,
pub result_kind: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub result_provenance: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub detail: Option<String>,
pub reason: String,
pub children: Vec<ValueDomainProvenanceNodeV2Json>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ValueDomainProvenanceTreeV2Json {
pub schema_version: String,
pub product: String,
pub value_kind: String,
pub value: serde_json::Value,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_provenance: Option<String>,
pub root: ValueDomainProvenanceNodeV2Json,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExpressionSemanticsPayloadV2Json {
pub expression_id: String,
pub expression_kind: String,
pub style_file_path: Option<String>,
pub selector_names: Vec<String>,
pub candidate_names: Vec<String>,
pub finite_values: Option<Vec<String>>,
pub value_domain_kind: ValueDomainKindV2Json,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_constraint_kind: Option<StringConstraintKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_prefix: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_suffix: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_min_len: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_max_len: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_char_must: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_char_may: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_may_include_other_chars: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_domain_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_domain_derivation: Option<ValueDomainDerivationV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_domain_provenance_tree: Option<ValueDomainProvenanceTreeV2Json>,
pub selector_certainty: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_certainty_shape_kind: Option<CertaintyShapeKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_constraint_kind: Option<StringConstraintKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_certainty_shape_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_certainty_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_shape_kind: Option<CertaintyShapeKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_constraint_kind: Option<StringConstraintKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_shape_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SourceExpressionResolutionPayloadV2Json {
pub expression_id: String,
pub style_file_path: Option<String>,
pub selector_names: Vec<String>,
pub finite_values: Option<Vec<String>>,
pub selector_certainty: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_certainty_shape_kind: Option<CertaintyShapeKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_constraint_kind: Option<StringConstraintKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_certainty_shape_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selector_certainty_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_shape_kind: Option<CertaintyShapeKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_constraint_kind: Option<StringConstraintKindV2Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_prefix: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_suffix: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_min_len: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_max_len: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_char_must: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_char_may: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_may_include_other_chars: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_shape_label: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value_certainty_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub reason: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SelectorUsagePayloadV2Json {
pub canonical_name: String,
pub total_references: i32,
pub direct_reference_count: i32,
pub editable_direct_reference_count: i32,
pub exact_reference_count: i32,
pub inferred_or_better_reference_count: i32,
pub has_expanded_references: bool,
pub has_style_dependency_references: bool,
pub has_any_references: bool,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(
tag = "kind",
rename_all = "kebab-case",
rename_all_fields = "camelCase"
)]
#[allow(clippy::large_enum_variant)]
pub enum QueryResultV2Json {
#[serde(rename = "expression-semantics")]
ExpressionSemantics {
file_path: String,
query_id: String,
payload: ExpressionSemanticsPayloadV2Json,
},
#[serde(rename = "source-expression-resolution")]
SourceExpressionResolution {
file_path: String,
query_id: String,
payload: SourceExpressionResolutionPayloadV2Json,
},
#[serde(rename = "selector-usage")]
SelectorUsage {
file_path: String,
query_id: String,
payload: SelectorUsagePayloadV2Json,
},
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextPositionJsonV2Json {
pub line: i32,
pub character: i32,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextRangeJsonV2Json {
pub start: TextPositionJsonV2Json,
pub end: TextPositionJsonV2Json,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PlannedTextEditJsonV2Json {
pub uri: String,
pub range: TextRangeJsonV2Json,
pub new_text: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TextRewritePlanJsonV2Json {
pub target: serde_json::Value,
pub edits: Vec<PlannedTextEditJsonV2Json>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CheckerReportJsonV1Json {
pub version: String,
pub findings: Vec<serde_json::Value>,
pub summary: serde_json::Value,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EngineOutputV2Json {
pub version: String,
pub query_results: Vec<QueryResultV2Json>,
pub rewrite_plans: Vec<TextRewritePlanJsonV2Json>,
pub checker_report: CheckerReportJsonV1Json,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum CodeActionPlanKindJson {
#[serde(rename = "quickfix")]
Quickfix,
#[serde(rename = "refactor.extract")]
RefactorExtract,
#[serde(rename = "refactor.inline")]
RefactorInline,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OmenaQueryWorkspaceTextEditV0Json {
pub uri: String,
pub range: serde_json::Value,
pub new_text: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OmenaQueryCodeActionV0Json {
pub title: String,
pub kind: CodeActionPlanKindJson,
pub edits: Vec<OmenaQueryWorkspaceTextEditV0Json>,
pub source: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OmenaQueryCodeActionPlanV0Json {
pub schema_version: String,
pub product: String,
pub file_uri: String,
pub file_kind: String,
pub action_count: i32,
pub actions: Vec<OmenaQueryCodeActionV0Json>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ready_surfaces: Option<Vec<String>>,
}