UNPKG

@ordojs/core

Version:

Core compiler and runtime for OrdoJS framework

191 lines 5.39 kB
/** * @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