use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(untagged)]
pub enum IssueAction {
Fix(FixAction),
SuppressLine(SuppressLineAction),
SuppressFile(SuppressFileAction),
AddToConfig(AddToConfigAction),
}
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct FixAction {
#[serde(rename = "type")]
pub kind: FixActionType,
pub auto_fixable: bool,
pub description: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub note: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub available_in_catalogs: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub suggested_target: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "kebab-case")]
pub enum FixActionType {
RemoveExport,
DeleteFile,
RemoveDependency,
MoveDependency,
RemoveEnumMember,
RemoveClassMember,
ResolveImport,
InstallDependency,
RemoveDuplicate,
MoveToDev,
RefactorCycle,
RefactorReExportCycle,
RefactorBoundary,
ExportType,
RemoveCatalogEntry,
RemoveEmptyCatalogGroup,
UpdateCatalogReference,
AddCatalogEntry,
RemoveCatalogReference,
RemoveDependencyOverride,
FixDependencyOverride,
}
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct SuppressLineAction {
#[serde(rename = "type")]
pub kind: SuppressLineKind,
pub auto_fixable: bool,
pub description: String,
pub comment: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scope: Option<SuppressLineScope>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "kebab-case")]
pub enum SuppressLineKind {
SuppressLine,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "kebab-case")]
pub enum SuppressLineScope {
PerLocation,
}
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct SuppressFileAction {
#[serde(rename = "type")]
pub kind: SuppressFileKind,
pub auto_fixable: bool,
pub description: String,
pub comment: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "kebab-case")]
pub enum SuppressFileKind {
SuppressFile,
}
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct AddToConfigAction {
#[serde(rename = "type")]
pub kind: AddToConfigKind,
pub auto_fixable: bool,
pub description: String,
pub config_key: String,
pub value: AddToConfigValue,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value_schema: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "kebab-case")]
pub enum AddToConfigKind {
AddToConfig,
}
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(untagged)]
pub enum AddToConfigValue {
Scalar(String),
ExportsRules(Vec<IgnoreExportsRule>),
RuleObject(serde_json::Map<String, serde_json::Value>),
}
#[derive(Debug, Clone, Serialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct IgnoreExportsRule {
pub file: String,
pub exports: Vec<String>,
}