@ordojs/core
Version:
Core compiler and runtime for OrdoJS framework
141 lines • 3.48 kB
TypeScript
/**
* @fileoverview CSS Optimization Engine for OrdoJS Framework
* Handles CSS dead code elimination, minification, and optimization
*/
import { type ComponentAST, type StyleBlockNode } from '../types/index.js';
/**
* CSS optimization options
*/
export interface CSSOptimizationOptions {
/**
* Whether to remove unused CSS rules
*/
removeUnusedRules?: boolean;
/**
* Whether to minify CSS output
*/
minify?: boolean;
/**
* Whether to merge duplicate rules
*/
mergeDuplicateRules?: boolean;
/**
* Whether to remove redundant declarations
*/
removeRedundantDeclarations?: boolean;
/**
* Whether to optimize shorthand properties
*/
optimizeShorthands?: boolean;
/**
* Whether to remove empty rules
*/
removeEmptyRules?: boolean;
/**
* Whether to sort declarations for better compression
*/
sortDeclarations?: boolean;
/**
* Preserve important comments
*/
preserveImportantComments?: boolean;
}
/**
* CSS usage analysis result
*/
export interface CSSUsageAnalysis {
usedSelectors: Set<string>;
usedClasses: Set<string>;
usedIds: Set<string>;
usedElements: Set<string>;
usedPseudoClasses: Set<string>;
usedPseudoElements: Set<string>;
}
/**
* CSS optimization result
*/
export interface CSSOptimizationResult {
optimizedCSS: string;
originalSize: number;
optimizedSize: number;
compressionRatio: number;
removedRules: number;
mergedRules: number;
optimizedDeclarations: number;
}
/**
* CSS Optimizer for OrdoJS components
*/
export declare class OrdoJSCSSOptimizer {
private options;
constructor(options?: Partial<CSSOptimizationOptions>);
/**
* Optimize CSS styles for a component
*/
optimize(styleBlock: StyleBlockNode, componentAST?: ComponentAST): CSSOptimizationResult;
/**
* Analyze CSS usage in component AST
*/
private analyzeUsage;
/**
* Analyze markup block for CSS usage
*/
private analyzeMarkupUsage;
/**
* Analyze client block for dynamic CSS usage
*/
private analyzeClientUsage;
/**
* Remove unused CSS rules based on usage analysis
*/
private removeUnusedRules;
/**
* Check if a CSS rule is used based on usage analysis
*/
private isRuleUsed;
/**
* Check if a selector part is used
*/
private isPartUsed;
/**
* Parse CSS selector into components
*/
private parseSelector;
/**
* Remove empty CSS rules
*/
private removeEmptyRules;
/**
* Merge duplicate CSS rules
*/
private mergeDuplicateRules;
/**
* Remove redundant CSS declarations
*/
private removeRedundantDeclarations;
/**
* Optimize shorthand properties
*/
private optimizeShorthands;
/**
* Create shorthand property from individual properties
*/
private createShorthand;
/**
* Sort CSS declarations for better compression
*/
private sortDeclarations;
/**
* Generate CSS string from StyleBlockNode
*/
private generateCSS;
/**
* Minify CSS output
*/
private minifyCSS;
/**
* Optimize multiple style blocks and generate a single optimized bundle
*/
optimizeBundle(styleBlocks: StyleBlockNode[], componentASTs?: ComponentAST[]): CSSOptimizationResult;
}
//# sourceMappingURL=css-optimizer.d.ts.map