MCPcopy Create free account
hub / github.com/code-pushup/cli / groupsFromRuleCategories

Function groupsFromRuleCategories

packages/plugin-eslint/src/lib/meta/groups.ts:60–91  ·  view source on GitHub ↗
(rules: RuleData[])

Source from the content-addressed store, hash-verified

58}
59
60export function groupsFromRuleCategories(rules: RuleData[]): Group[] {
61 const categoriesMap = rules.reduce<Record<string, Record<string, string[]>>>(
62 (acc, rule) => {
63 // meta.docs.category still used by some popular plugins (e.g. import, react, functional)
64 const category = rule.meta.docs?.category;
65 if (!category) {
66 return acc;
67 }
68 const { plugin = '' } = parseRuleId(rule.id);
69 return {
70 ...acc,
71 [plugin]: {
72 ...acc[plugin],
73 [category]: [...(acc[plugin]?.[category] ?? []), ruleToSlug(rule)],
74 },
75 };
76 },
77 {},
78 );
79
80 const groups = Object.entries(categoriesMap).flatMap(([plugin, categories]) =>
81 Object.entries(categories).map(
82 ([category, slugs]): Group => ({
83 slug: `${slugify(plugin)}-${slugify(category)}`,
84 title: `${category} (${plugin})`,
85 refs: slugs.map(slug => ({ slug, weight: 1 })),
86 }),
87 ),
88 );
89
90 return groups.toSorted((a, b) => a.slug.localeCompare(b.slug));
91}
92
93export function groupsFromCustomConfig(
94 rules: RuleData[],

Callers 2

listAuditsAndGroupsFunction · 0.85

Calls 3

slugifyFunction · 0.90
parseRuleIdFunction · 0.85
ruleToSlugFunction · 0.85

Tested by

no test coverage detected