@eslint/css
Version:
CSS linting plugin for ESLint
37 lines (36 loc) • 1.28 kB
TypeScript
/**
* @fileoverview Additional types for this package.
* @author Nicholas C. Zakas
*/
import type { CustomRuleDefinitionType, CustomRuleTypeDefinitions, RuleVisitor } from "@eslint/core";
import type { CssNodePlain, CssNodeNames } from "@eslint/css-tree";
import type { CSSLanguageOptions, CSSSourceCode } from "./index.js";
/** Adds matching `:exit` selectors for all properties of a `RuleVisitor`. */
type WithExit<RuleVisitorType extends RuleVisitor> = {
[Key in keyof RuleVisitorType as Key | `${Key & string}:exit`]: RuleVisitorType[Key];
};
/**
* A CSS syntax element, including nodes and comments.
*/
export type CSSSyntaxElement = CssNodePlain;
type CSSNodeVisitor = {
[Type in CssNodeNames]: (node: Extract<CssNodePlain, {
type: Type;
}>) => void;
};
/**
* A visitor for CSS nodes.
*/
export interface CSSRuleVisitor extends RuleVisitor, Partial<WithExit<CSSNodeVisitor>> {
}
export type CSSRuleDefinitionTypeOptions = CustomRuleTypeDefinitions;
/**
* A rule definition for CSS.
*/
export type CSSRuleDefinition<Options extends Partial<CSSRuleDefinitionTypeOptions> = {}> = CustomRuleDefinitionType<{
LangOptions: CSSLanguageOptions;
Code: CSSSourceCode;
Visitor: CSSRuleVisitor;
Node: CssNodePlain;
}, Options>;
export {};