use skif_core::{Category, DependencyKind, Fixability, RuleMeta, Severity};
use skif_lint::Emitter;
use super::JsRule;
use super::support::report_unused_dependencies;
use crate::analysis::JsAnalysis;
pub static META: RuleMeta = RuleMeta::new(
"unused-dependencies",
Category::Js,
Some(Severity::Error),
Fixability::Unsafe,
"A package in `dependencies` is never imported, required or run by a script; `optionalDependencies` are not checked.",
);
pub struct UnusedDependencies;
impl JsRule for UnusedDependencies {
fn meta(&self) -> &'static RuleMeta {
&META
}
fn check(&self, analysis: &JsAnalysis<'_>, out: &mut Emitter<'_>) {
let kinds: &[DependencyKind] = if analysis.strict() {
&[DependencyKind::Dependencies, DependencyKind::PeerDependencies]
} else {
&[DependencyKind::Dependencies]
};
report_unused_dependencies(&META, kinds, analysis, out);
}
}