@@ -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"
1213import { default as selectorParser , type Node } from "postcss-selector-parser"
1314
1415export 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