Skip to content

Commit e0334b5

Browse files
committed
chore(no-unused-class-name): using type narrowing on ESLintCompatiblePostCSSNode
1 parent e627577 commit e0334b5

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

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

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@ import type {
99
SvelteSpreadAttribute,
1010
SvelteStyleDirective,
1111
} from "svelte-eslint-parser/lib/ast"
12-
import type { AnyNode, AtRule, Root, Rule } from "postcss"
13-
import { default as selectorParser, type Node } from "postcss-selector-parser"
12+
import type { AnyNode } from "postcss"
13+
import {
14+
default as selectorParser,
15+
type Node as SelectorNode,
16+
} from "postcss-selector-parser"
1417

1518
export default createRule("no-unused-class-name", {
1619
meta: {
@@ -88,32 +91,27 @@ function findClassesInAttribute(
8891
/**
8992
* Extract all class names used in a PostCSS node.
9093
*/
91-
function findClassesInPostCSSNode<T extends AnyNode>(
92-
node: ESLintCompatiblePostCSSNode<T>,
94+
function findClassesInPostCSSNode(
95+
node: ESLintCompatiblePostCSSNode<AnyNode>,
9396
): string[] {
9497
if (node.type === "SvelteStyle-rule") {
95-
const typedNode = node as ESLintCompatiblePostCSSNode<Rule>
96-
let classes = typedNode.nodes.flatMap(findClassesInPostCSSNode)
98+
let classes = node.nodes.flatMap(findClassesInPostCSSNode)
9799
const processor = selectorParser()
98100
classes = classes.concat(
99-
findClassesInSelector(processor.astSync(typedNode.selector)),
101+
findClassesInSelector(processor.astSync(node.selector)),
100102
)
101103
return classes
102104
}
103105
if (node.type === "SvelteStyle-root" || node.type === "SvelteStyle-atrule") {
104-
return (
105-
node as
106-
| ESLintCompatiblePostCSSNode<Root>
107-
| ESLintCompatiblePostCSSNode<AtRule>
108-
).nodes.flatMap(findClassesInPostCSSNode)
106+
return node.nodes.flatMap(findClassesInPostCSSNode)
109107
}
110108
return []
111109
}
112110

113111
/**
114112
* Extract all class names used in a PostCSS selector.
115113
*/
116-
function findClassesInSelector(node: Node): string[] {
114+
function findClassesInSelector(node: SelectorNode): string[] {
117115
if (node.type === "class") {
118116
return [node.value]
119117
}

0 commit comments

Comments
 (0)