eslint-plugin-vue-scoped-css
Version:
ESLint plugin for Scoped CSS in Vue.js
57 lines (56 loc) • 1.98 kB
TypeScript
import type { AST, SourceCode, RuleContext, LineAndColumnData } from "../../../types";
import type { VCSSStyleSheet, VCSSNode, VCSSSelectorNode } from "../../ast";
interface VisitorVCSSNode {
exit?: boolean;
break?: boolean;
enterNode(node: VCSSNode): void;
leaveNode?(node: VCSSNode): void;
}
interface VisitorVCSSSelectorNode {
exit?: boolean;
break?: boolean;
enterNode(node: VCSSSelectorNode): void;
leaveNode?(node: VCSSSelectorNode): void;
}
interface BaseStyleContext {
readonly styleElement: AST.VElement;
readonly sourceCode: SourceCode;
readonly scoped: boolean;
readonly module: boolean;
readonly lang: string;
traverseNodes(visitor: VisitorVCSSNode): void;
traverseSelectorNodes(visitor: VisitorVCSSSelectorNode): void;
}
export interface ValidStyleContext extends BaseStyleContext {
readonly invalid: null;
readonly cssNode: VCSSStyleSheet;
}
export interface InvalidStyleContext extends BaseStyleContext {
readonly invalid: {
message: string;
needReport: boolean;
loc: LineAndColumnData;
};
readonly cssNode: null;
}
export type StyleContext = InvalidStyleContext | ValidStyleContext;
export declare function isValidStyleContext(context: StyleContext): context is ValidStyleContext;
export declare class StyleContextImpl {
readonly styleElement: AST.VElement;
readonly sourceCode: SourceCode;
readonly invalid: {
message: string;
needReport: boolean;
loc: LineAndColumnData;
} | null;
readonly scoped: boolean;
readonly module: boolean;
readonly lang: string;
private readonly cssText;
readonly cssNode: VCSSStyleSheet | null;
constructor(style: AST.VElement, context: RuleContext);
traverseNodes(visitor: VisitorVCSSNode): void;
traverseSelectorNodes(visitor: VisitorVCSSSelectorNode): void;
}
export declare function createStyleContexts(context: RuleContext): StyleContext[];
export {};