UNPKG

@stacksjs/stx

Version:

A performant UI Framework. Powered by Bun.

126 lines 4.06 kB
/** * Analyze which directives are used in a template. */ export declare function analyzeDirectiveUsage(template: string): DirectiveUsage[]; /** * Get list of unused directives for tree-shaking. */ export declare function getUnusedDirectives(template: string, preserveDirectives?: string[]): string[]; /** * Generate tree-shaken directive loader code. */ export declare function generateTreeShakenBundle(usedDirectives: string[]): string; /** * Find dead code branches that can be eliminated. */ export declare function findDeadBranches(template: string, constants?: Record<string, unknown>): DeadBranch[]; /** * Remove dead code branches from template. */ export declare function eliminateDeadCode(template: string, constants?: Record<string, unknown>): { content: string, removed: string[] }; /** * Evaluate a constant expression at compile time. */ export declare function evaluateConstant(expression: string, constants: Record<string, unknown>): unknown; /** * Fold constant expressions in template. */ export declare function foldConstants(template: string, constants: Record<string, unknown>): { content: string, folded: string[] }; /** * Minify HTML content while preserving template directives. */ export declare function minifyHtml(template: string): string; /** * Pool repeated string literals in template. */ export declare function poolStrings(template: string): { content: string pool: Map<string, string> count: number }; /** * Optimize a single template with all available optimizations. */ export declare function optimizeTemplate(template: string, options?: OptimizationOptions): OptimizationResult; /** * Create optimized build for multiple templates. */ export declare function createOptimizedBuild(templates: Map<string, string>, options?: OptimizationOptions): Promise<BuildResult>; /** * Build-Time Optimization Module * * Provides tree-shaking, dead code elimination, and compile-time optimizations * for stx templates to reduce bundle size and improve runtime performance. * * ## Features * * 1. **Tree-Shaking** - Remove unused directive handlers from compiled output * 2. **Dead Code Elimination** - Remove unreachable template branches * 3. **Constant Folding** - Pre-evaluate static expressions * 4. **String Pooling** - Deduplicate repeated string literals * 5. **HTML Minification** - Remove whitespace and comments from static HTML * * ## Usage * * ```typescript * import { optimizeTemplate, createOptimizedBuild } from 'stx/build-optimizer' * * // Optimize a single template * const optimized = optimizeTemplate(template, { treeShake: true }) * * // Create optimized build for multiple templates * const build = await createOptimizedBuild(templates, options) * ``` * * @module build-optimizer */ /** Optimization options */ export declare interface OptimizationOptions { treeShake?: boolean deadCodeElimination?: boolean constantFolding?: boolean stringPooling?: boolean minifyHtml?: boolean removeDevCode?: boolean constants?: Record<string, unknown> preserveDirectives?: string[] target?: 'production' | 'development' } /** Optimization result */ export declare interface OptimizationResult { content: string originalSize: number optimizedSize: number reduction: number appliedOptimizations: string[] removedDirectives: string[] foldedConstants: string[] pooledStrings: number warnings: string[] } /** Build result for multiple templates */ export declare interface BuildResult { templates: Map<string, OptimizationResult> directiveBundle?: string stringPool?: Map<string, string> totalOriginalSize: number totalOptimizedSize: number overallReduction: number warnings: string[] } /** Directive usage info */ declare interface DirectiveUsage { name: string count: number locations: Array<{ line: number, column: number }> } /** Dead code branch */ declare interface DeadBranch { start: number end: number reason: string } export { analyzeDirectiveUsage as analyzeUsage, findDeadBranches as findDeadCode, };