swc_css_lints/rules/
mod.rs

1use crate::{
2    config::LintConfig,
3    error::ConfigError,
4    rule::LintRule,
5    rules::{
6        at_rule_no_unknown::at_rule_no_unknown, block_no_empty::block_no_empty,
7        color_hex_alpha::color_hex_alpha, color_hex_length::color_hex_length,
8        color_no_invalid_hex::color_no_invalid_hex,
9        custom_property_no_missing_var_function::custom_property_no_missing_var_function,
10        declaration_no_important::declaration_no_important,
11        font_family_no_duplicate_names::font_family_no_duplicate_names,
12        keyframe_declaration_no_important::keyframe_declaration_no_important,
13        no_duplicate_at_import_rules::no_duplicate_at_import_rules,
14        no_empty_source::no_empty_source,
15        no_invalid_position_at_import_rule::no_invalid_position_at_import_rule,
16        selector_max_class::selector_max_class, selector_max_combinators::selector_max_combinators,
17        unit_no_unknown::unit_no_unknown,
18    },
19};
20
21pub mod at_rule_no_unknown;
22pub mod block_no_empty;
23pub mod color_hex_alpha;
24pub mod color_hex_length;
25pub mod color_no_invalid_hex;
26pub mod custom_property_no_missing_var_function;
27pub mod declaration_no_important;
28pub mod font_family_no_duplicate_names;
29pub mod keyframe_declaration_no_important;
30pub mod no_duplicate_at_import_rules;
31pub mod no_empty_source;
32pub mod no_invalid_position_at_import_rule;
33pub mod selector_max_class;
34pub mod selector_max_combinators;
35pub mod unit_no_unknown;
36
37pub struct LintParams<'a> {
38    pub lint_config: &'a LintConfig,
39}
40
41pub fn get_rules(
42    LintParams { lint_config }: &LintParams,
43) -> Result<Vec<Box<dyn LintRule>>, ConfigError> {
44    let rules_config = &lint_config.rules;
45
46    let rules = vec![
47        block_no_empty((&rules_config.block_no_empty).into()),
48        at_rule_no_unknown((&rules_config.at_rule_no_unknown).into())?,
49        no_empty_source((&rules_config.no_empty_source).into()),
50        declaration_no_important((&rules_config.declaration_no_important).into()),
51        keyframe_declaration_no_important((&rules_config.keyframe_declaration_no_important).into()),
52        no_invalid_position_at_import_rule(
53            (&rules_config.no_invalid_position_at_import_rule).into(),
54        )?,
55        selector_max_class((&rules_config.selector_max_class).into()),
56        color_hex_length((&rules_config.color_hex_length).into()),
57        color_no_invalid_hex((&rules_config.color_no_invalid_hex).into()),
58        unit_no_unknown((&rules_config.unit_no_unknown).into())?,
59        selector_max_combinators((&rules_config.selector_max_combinators).into()),
60        font_family_no_duplicate_names((&rules_config.font_family_no_duplicate_names).into())?,
61        color_hex_alpha((&rules_config.color_hex_alpha).into()),
62        no_duplicate_at_import_rules((&rules_config.no_duplicate_at_import_rules).into()),
63        custom_property_no_missing_var_function(
64            (&rules_config.custom_property_no_missing_var_function).into(),
65        ),
66    ];
67
68    Ok(rules)
69}