UNPKG

@ordojs/core

Version:

Core compiler and runtime for OrdoJS framework

141 lines 3.48 kB
/** * @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