@stacksjs/stx
Version:
A performant UI Framework. Powered by Bun.
126 lines • 4.06 kB
TypeScript
/**
* 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,
};