postcss-minify-selectors
Version:
Minify selectors with PostCSS.
81 lines • 3.7 kB
TypeScript
export type SelectorArena = import('./arena.js').SelectorArena;
export type Specificity = import('./arena.js').Specificity;
export type Normalized = import('./normalizeOutput.js').Normalized;
/** @typedef {import('./arena.js').SelectorArena} SelectorArena */
/** @typedef {import('./arena.js').Specificity} Specificity */
/** @typedef {import('./normalizeOutput.js').Normalized} Normalized */
/** @param {{pairs:Map<number,Map<number,number>>,next:number}} state @param {number} left @param {number} right */
export declare function consId(state: {
pairs: Map<number, Map<number, number>>;
next: number;
}, left: number, right: number): number;
export type FoldOccurrence = {
selector: ActiveSelector;
position: number;
middle: Normalized;
group: FoldGroup;
text: string;
};
export type FoldGroup = {
activeOccurrences: Set<FoldOccurrence>;
orderHeap: FoldOccurrence[];
lexHeap: FoldOccurrence[];
middleCounts: Map<number, {
count: number;
middle: Normalized;
}>;
specificity: Specificity;
specificityId: number;
activeCount: number;
selectorLength: number;
middleLength: number;
version: number;
sequence: number;
};
export type FoldCandidate = {
group: FoldGroup;
version: number;
savings: number;
count: number;
first: FoldOccurrence;
lex: string;
};
export type ActiveSelector = Normalized & {
active: boolean;
activeId: number;
order: number;
memberships: FoldOccurrence[];
previousId?: number;
nextId?: number;
};
/** @param {Normalized} selector @param {SelectorArena} arena */
export declare function selectorCanFold(selector: Normalized, arena: SelectorArena): boolean;
/** @param {Map<number,Map<number,Map<number,FoldGroup>>>} groups @param {{value:number}} sequence @param {number} prefix @param {number} suffix @param {Normalized} middle */
export declare function foldGroup(groups: Map<number, Map<number, Map<number, FoldGroup>>>, sequence: {
value: number;
}, prefix: number, suffix: number, middle: Normalized): FoldGroup;
/** @param {FoldGroup} group */
export declare function activeOccurrences(group: FoldGroup): FoldOccurrence[];
/** @param {FoldOccurrence[]} values @param {FoldOccurrence} value @param {(left:FoldOccurrence,right:FoldOccurrence)=>boolean} before */
export declare function pushOccurrence(values: FoldOccurrence[], value: FoldOccurrence, before: (left: FoldOccurrence, right: FoldOccurrence) => boolean): void;
/** @param {FoldOccurrence} left @param {FoldOccurrence} right */
export declare function occurrenceOrder(left: FoldOccurrence, right: FoldOccurrence): boolean;
/** @param {FoldOccurrence} left @param {FoldOccurrence} right */
export declare function occurrenceText(left: FoldOccurrence, right: FoldOccurrence): boolean;
/** @param {FoldGroup} group @return {FoldCandidate | undefined} */
export declare function foldCandidate(group: FoldGroup): FoldCandidate | undefined;
export declare class CandidateHeap {
/** @type {FoldCandidate[]} */ values: FoldCandidate[];
sort: boolean;
/** @param {boolean} sort */
constructor(sort: boolean);
/** @param {FoldCandidate} left @param {FoldCandidate} right */
before(left: FoldCandidate, right: FoldCandidate): boolean;
/** @param {FoldCandidate} value */
push(value: FoldCandidate): void;
pop(): FoldCandidate;
}
/** @param {boolean} sort @param {FoldCandidate} left @param {FoldCandidate} right */
export declare function foldCandidateBefore(sort: boolean, left: FoldCandidate, right: FoldCandidate): boolean;
/** @param {FoldGroup} group @param {FoldOccurrence} occurrence */
//# sourceMappingURL=normalizeFoldSupport.d.ts.map