@ordojs/core
Version:
Core compiler and runtime for OrdoJS framework
191 lines • 5.39 kB
TypeScript
/**
* @fileoverview OrdoJS Code Generator - Refactored modular implementation
* @author OrdoJS Framework Team
*/
import type { ComponentAST, GeneratedCode, Props, SourceMap } from '../types/index.js';
/**
* Code generation target environments
*/
export type CodeGenTarget = 'client' | 'server' | 'static' | 'universal';
/**
* Code generation options
*/
export interface CodeGeneratorOptions {
/** Target environment */
target?: 'development' | 'production';
/** Enable code minification */
minify?: boolean;
/** Generate source maps */
sourceMaps?: boolean;
/** Target ES version */
esTarget?: 'es2022' | 'es2020' | 'es2018' | 'es5';
/** Enable tree shaking */
treeShaking?: boolean;
/** Custom transformers */
transformers?: CodeTransformer[];
/** Output format */
format?: 'esm' | 'cjs' | 'umd' | 'iife';
/** Enable hot module replacement */
hmr?: boolean;
/** Bundle splitting strategy */
splitting?: 'none' | 'chunks' | 'modules';
}
/**
* Code transformer interface for plugin-based transformations
*/
export interface CodeTransformer {
/** Transformer name */
name: string;
/** Target phase */
phase: 'pre' | 'post' | 'optimize';
/** Target code type */
targets: CodeGenTarget[];
/** Transform function */
transform(code: string, context: TransformContext): TransformResult;
}
/**
* Transform context for code transformers
*/
export interface TransformContext {
/** Original AST */
ast: ComponentAST;
/** Generation options */
options: Required<CodeGeneratorOptions>;
/** Target environment */
target: CodeGenTarget;
/** Component metadata */
metadata: ComponentMetadata;
/** Source map builder */
sourceMapBuilder?: SourceMapBuilder;
}
/**
* Transform result
*/
export interface TransformResult {
/** Transformed code */
code: string;
/** Source map changes */
sourceMap?: SourceMapSegment[];
/** Additional metadata */
metadata?: Record<string, any>;
}
/**
* Component metadata for code generation
*/
export interface ComponentMetadata {
name: string;
hasClientCode: boolean;
hasServerCode: boolean;
hasStyles: boolean;
dependencies: string[];
exports: string[];
props: string[];
state: string[];
functions: string[];
lifecycle: string[];
}
/**
* Source map segment
*/
export interface SourceMapSegment {
generatedLine: number;
generatedColumn: number;
originalLine: number;
originalColumn: number;
source: string;
name?: string;
}
/**
* Source map builder utility
*/
export declare class SourceMapBuilder {
private segments;
private sources;
private names;
addMapping(generatedLine: number, generatedColumn: number, originalLine: number, originalColumn: number, source: string, name?: string): void;
build(): SourceMap;
private encodeMappings;
}
/**
* Code generation context for tracking state
*/
export interface CodeGenContext {
/** Current indentation level */
indent: number;
/** Generated code lines */
lines: string[];
/** Source map builder */
sourceMap?: SourceMapBuilder;
/** Variable scope tracking */
scopes: Map<string, Set<string>>;
/** Current scope depth */
scopeDepth: number;
/** Import statements */
imports: Map<string, Set<string>>;
/** Export statements */
exports: Set<string>;
}
/**
* Enhanced OrdoJS Code Generator with modular architecture
*/
export declare class OrdoJSCodeGenerator {
private options;
private transformers;
constructor(options?: CodeGeneratorOptions);
/**
* Generate code for all targets
*/
generate(ast: ComponentAST): GeneratedCode;
/**
* Generate client-side code
*/
generateClientCode(ast: ComponentAST, context: TransformContext): string;
/**
* Generate server-side code
*/
generateServerCode(ast: ComponentAST, context: TransformContext): string;
/**
* Generate HTML template
*/
generateHTML(ast: ComponentAST, context: TransformContext, props?: Props): string;
/**
* Generate CSS styles
*/
generateCSS(ast: ComponentAST, context: TransformContext): string;
/**
* Add custom transformer
*/
addTransformer(transformer: CodeTransformer): void;
/**
* Remove transformer by name
*/
removeTransformer(name: string): boolean;
private registerDefaultTransformers;
private registerCustomTransformers;
private extractMetadata;
private createTransformContext;
private createCodeGenContext;
private generateClientImports;
private generateClientComponent;
private generateReactiveVariable;
private generateFunction;
private generateLifecycleHook;
private generateRenderFunction;
private generateHTMLElement;
private generateStatement;
private generateExpression;
private generateServerImports;
private generateServerFunctions;
private generateServerFunction;
private generateServerExports;
private generateClientExports;
private generateHTMLStructure;
private applyTransformers;
private createEmptySourceMap;
private capitalize;
}
/**
* Default code transformers
*/
export declare const defaultTransformers: CodeTransformer[];
//# sourceMappingURL=code-generator-refactored.d.ts.map