skif-js 0.1.1

JavaScript and TypeScript module graph and dependency rules for skif, built on oxc.
Documentation
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;

/// Metadata of `unused-dependencies`.
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.",
);

/// Reports `dependencies` and `optionalDependencies` that nothing uses.
pub struct UnusedDependencies;

impl JsRule for UnusedDependencies {
    fn meta(&self) -> &'static RuleMeta {
        &META
    }

    fn check(&self, analysis: &JsAnalysis<'_>, out: &mut Emitter<'_>) {
        report_unused_dependencies(
            &META,
            &[DependencyKind::Dependencies, DependencyKind::OptionalDependencies],
            analysis,
            out,
        );
    }
}