eslint-plugin-vue-scoped-css
Version:
ESLint plugin for Scoped CSS in Vue.js
56 lines (55 loc) • 2.2 kB
TypeScript
import type { LineAndColumnData, PostCSSSPNode } from "../../../types";
declare class SourceCodeLocationResolver {
private readonly text;
private readonly lineStartIndices;
constructor(code: string);
getLocFromIndex(index: number): LineAndColumnData;
getIndexFromLoc(loc: LineAndColumnData): number;
}
declare class RemapIndexContext {
private readonly mappers;
private orgIndex;
private newIndex;
private batchLengthOrg;
private batchLengthNew;
applyEq(length: number): void;
applyIns(length: number): void;
applyDel(length: number): void;
flush(): void;
private addMap;
hasMapping(): boolean;
remapIndex(index: number): number;
}
interface ReplaceInfo {
start: number;
original: string;
random: string;
replace: string;
restore?: (node: PostCSSSPNode, random: string, original: string) => PostCSSSPNode | null;
}
export declare function definePatternsSearchGenerator<REGS extends {
[name: string]: RegExp;
}>(regexps: REGS, str: string): Generator<{
name: keyof REGS & string;
result: RegExpExecArray;
}>;
export declare class ReplaceSelectorContext {
readonly cssSelector: string;
readonly remapContext: RemapIndexContext;
readonly replaces: ReplaceInfo[];
readonly comments: ReplaceInfo[];
readonly cssSourceCode: SourceCodeLocationResolver;
readonly originalSourceCode: SourceCodeLocationResolver;
constructor(cssSelector: string, originalSelector: string, remapContext: RemapIndexContext, replaces: ReplaceInfo[], comments: ReplaceInfo[]);
hasReplace(): boolean;
}
export type SelectorReplacer = {
regexp: RegExp;
replace: (result: RegExpExecArray, random: string, info: {
beforeCss: string[];
}) => string;
restore?: (node: PostCSSSPNode, random: string, original: string) => PostCSSSPNode | null;
};
export declare function replaceSelector(selector: string, regexps: SelectorReplacer[], commentRegexps?: SelectorReplacer[], trivialRegexps?: SelectorReplacer[]): ReplaceSelectorContext;
export declare function restoreReplacedSelector(orgNode: PostCSSSPNode, replaceSelectorContext: ReplaceSelectorContext): PostCSSSPNode;
export {};