Skip to content

Commit e627577

Browse files
committed
chore(no-unused-class-name): update to reflect parser types
1 parent c1d0fa3 commit e627577

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/rules/no-unused-class-name.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
SvelteSpreadAttribute,
1010
SvelteStyleDirective,
1111
} from "svelte-eslint-parser/lib/ast"
12+
import type { AnyNode, AtRule, Root, Rule } from "postcss"
1213
import { default as selectorParser, type Node } from "postcss-selector-parser"
1314

1415
export default createRule("no-unused-class-name", {
@@ -87,17 +88,24 @@ function findClassesInAttribute(
8788
/**
8889
* Extract all class names used in a PostCSS node.
8990
*/
90-
function findClassesInPostCSSNode(node: ESLintCompatiblePostCSSNode): string[] {
91+
function findClassesInPostCSSNode<T extends AnyNode>(
92+
node: ESLintCompatiblePostCSSNode<T>,
93+
): string[] {
9194
if (node.type === "SvelteStyle-rule") {
92-
let classes = node.nodes.flatMap(findClassesInPostCSSNode)
95+
const typedNode = node as ESLintCompatiblePostCSSNode<Rule>
96+
let classes = typedNode.nodes.flatMap(findClassesInPostCSSNode)
9397
const processor = selectorParser()
9498
classes = classes.concat(
95-
findClassesInSelector(processor.astSync(node.selector)),
99+
findClassesInSelector(processor.astSync(typedNode.selector)),
96100
)
97101
return classes
98102
}
99103
if (node.type === "SvelteStyle-root" || node.type === "SvelteStyle-atrule") {
100-
return node.nodes.flatMap(findClassesInPostCSSNode)
104+
return (
105+
node as
106+
| ESLintCompatiblePostCSSNode<Root>
107+
| ESLintCompatiblePostCSSNode<AtRule>
108+
).nodes.flatMap(findClassesInPostCSSNode)
101109
}
102110
return []
103111
}

0 commit comments

Comments
 (0)